2016-06-01 11 views
-1

verwenden. Ich möchte CSV-Dateien generieren. Ich habe eine Methode, die generateCSVErhalten Sie keinen Kompilierungsfehler, wenn Sie die Drei-Punkte-Notation für die Parameter

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(); 
    } 
} 

einen Dateinamen als Parameter und eine Reihe von Einträgen nimmt Wenn das Verfahren mit generateCSV("myfile.csv") Aufruf ohne die Einträge i keine Kompilierungsfehler erhalten haben. Ich dachte, dass diese Notation das Übergeben von 1-N-Parametern von diesem Objekttyp impliziert. Nein ?

+1

nein, Sie können auch 0 Parameter des Argumenttyps varargs übergeben. – Eran

+1

Sie können Ihre Signatur in 'generateCSV (String dateiname, String firstColumn, String ... otherColumns) ändern. –

Antwort

0

Es ist in Ordnung, nur einen einzigen Parameter an diese Methode zu übergeben: pColumns ist dann ein Array der Länge Null.

Wenn Sie, dass mindestens ein Spaltenname erforderlich sein soll übergeben wird, fügen Sie einen zusätzlichen Parameter:

private static void generateCSV(
    String pFilename, String firstColumn, String... otherColumns) { 

Sie müssen dann speziell auf die erste Spalte Griff:

fileWriter.append(firstColumn); 
    fileWriter.append(";"); 
    for(String column : otherColumns) { 
     fileWriter.append(column); 
     fileWriter.append(";"); 
    } 

, die leicht ist weniger praktisch als in der Lage zu sein, sie als ein einziges Array zu behandeln; Sie müssen dies jedoch nur gegen die Vorteile der Kompilierung von mindestens einer Spalte abwägen.

+0

Downvoter: Möchten Sie sagen, was Sie nicht mögen? –