对参数使用三点符号时不会出现编译错误
Don't get compilation error when using three dots notation for parameters
我想生成 CSV 文件。我有一个 generateCSV
方法,它将文件名作为参数和一堆条目
private static void generateCSV(String pFilename, String... pColumns) {
try(FileWriter fileWriter = new FileWriter(pFilename,true)) {
for(String column : pColumns) {
fileWriter.append(column);
fileWriter.append(";");
}
fileWriter.append("\n");
fileWriter.flush();
}
catch (IOException e) {
e.printStackTrace();
}
}
在没有条目的情况下使用 generateCSV("myfile.csv")
调用方法时,我没有收到任何编译错误。我认为这个表示法意味着从这个对象类型传递 1-N 个参数。没有?
只向此方法传递一个参数就可以了:pColumns
将是一个零长度数组。
如果你想要求至少传递一个列名,添加一个额外的参数:
private static void generateCSV(
String pFilename, String firstColumn, String... otherColumns) {
然后你需要特别处理第一列:
fileWriter.append(firstColumn);
fileWriter.append(";");
for(String column : otherColumns) {
fileWriter.append(column);
fileWriter.append(";");
}
这比将它们视为单个数组稍微不方便;但您只需要权衡这一点与至少拥有一列的编译时强制实施的好处。
我想生成 CSV 文件。我有一个 generateCSV
方法,它将文件名作为参数和一堆条目
private static void generateCSV(String pFilename, String... pColumns) {
try(FileWriter fileWriter = new FileWriter(pFilename,true)) {
for(String column : pColumns) {
fileWriter.append(column);
fileWriter.append(";");
}
fileWriter.append("\n");
fileWriter.flush();
}
catch (IOException e) {
e.printStackTrace();
}
}
在没有条目的情况下使用 generateCSV("myfile.csv")
调用方法时,我没有收到任何编译错误。我认为这个表示法意味着从这个对象类型传递 1-N 个参数。没有?
只向此方法传递一个参数就可以了:pColumns
将是一个零长度数组。
如果你想要求至少传递一个列名,添加一个额外的参数:
private static void generateCSV(
String pFilename, String firstColumn, String... otherColumns) {
然后你需要特别处理第一列:
fileWriter.append(firstColumn);
fileWriter.append(";");
for(String column : otherColumns) {
fileWriter.append(column);
fileWriter.append(";");
}
这比将它们视为单个数组稍微不方便;但您只需要权衡这一点与至少拥有一列的编译时强制实施的好处。