2016-05-11 6 views
-1

Ich versuche, Zeilen aus einer Textdatei in einem Array zu speichern, das kein String-Array ist. Der Rückgabetyp sollte ein GO-Array sein (habe eine andere Klasse mit dem Namen „GO“ mit Konstrukteuren erstellt und get-/set-Methoden, die ich in anderen Teilen des Codes verwenden werden.)Textdatei in nicht-String-Array speichern

int rad = 0; 
GO [] list = new CD [rad]; 

public GO[] readFile(String filename) throws FileNotFoundException { 
    Scanner read = new Scanner (new File(filename)); 
    while (read.hasNextLine()==true){ 
     rad++; 
     read.nextLine(); 
    } read.close(); 

    read = new Scanner(new File(filename)); 
    for (int i=0;i<list.length;i++){ 
     //here the lines of the file should be stored in the "GO"array 
     // but the declaration cannot convert string to GO[] 
     list[i]=read.nextLine() 
+3

'== wahr in der Logik ist redundant. Es ist wie '* 1' oder' +0'. – Pshemo

+0

Und deine Frage ist? – gfelisberto

+0

Edit: es soll "GO [] Liste = neue GO [Rad]" –

Antwort

-1

Sie Ich werde die resultierende String selbst analysieren und ein GO Objekt daraus erstellen, was eine separate Methode sein kann, Dinge sauber zu halten. Holen Sie sich die Werte der Variablen Ihres Objekts und verwenden Sie Ihre Setter entsprechend.

Wenn Ihr Programm den Inhalt der Datei schreibt, wäre es besser, GO implementieren Serializeable und Speichern/Laden des Zustands des Objekts selbst statt Text zu machen. Wenn nicht, ist das oben Ihre einzige Option, wirklich.

+0

Tatsächlich ist die Java-Serialisierung sehr aufgebläht, und wenn Sie nur die Details einer bestimmten Klasse beibehalten wollen, sind Sie wahrscheinlich besser dran, sie selbst zu schreiben. Serialisierung ist nur dann sinnvoll, wenn Sie ein allgemeines Framework haben, das unbekannte Klassen unterstützen sollte, und selbst dann gibt es auf dem Markt Substitute für Java-Serialisierung, die seine Größe reduzieren und seine Portabilität erhöhen. – RealSkeptic

0
class GO<T>{ 
    private T ref; 

    public GO(T ref) { 
    this.ref = ref; 
    } 

} 

Sie sollten Ihre GO-Klasse ändern, um Generika zu verwenden, und Sie können Go Array mit diesem Ansatz einen Mehrwert hinzufügen.

durch Ändern der Klasse zu Generika. Sie können eine Instanz der Go-Klasse erstellen, indem Sie ein beliebiges Objekt an den Konstruktor übergeben.

Verwandte Themen