2017-05-06 4 views
1

Ich habe ein Problem mit dem Lesen einer Datei, ändern Sie den Text in Objekte und dann fügen Sie es in eine Arraylist.Lesen von Objekten in Datei in Arraylist

Dies ist mein Code für das Lesen und Schreiben von Dateien

public class ReadWrite { 

    public void save(String filename, ArrayList<Sale> buildings) throws IOException{ 
     ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(filename)); 
     oos.writeObject(buildings); 
     oos.close(); 
    } 
    public ArrayList<Sale> load(String filename) throws ClassNotFoundException, IOException { 
     ObjectInputStream ois = new ObjectInputStream(new FileInputStream(filename)); 
     buildings = (ArrayList<Sale>)ois.readObject(); 
     ois.close(); 
     return buildings; 
    } 
} 

Das Problem der ist

buildings = (ArrayList<Sale>)ois.readObject(); 

Es sagt, dass seine einen ungeprüften Guss von Objekt zu Arraylist. Durchsuchen von Foren zu diesem Problem, aber es scheint nicht zu finden

+0

poste deinen gesamten Logcat – Kaushal28

+2

Es wird offensichtlich eine ungeprüfte Besetzung geben, aber dein Problem ist, dass du den Eingabestrom vor der Verwendung schließt. –

+0

Es ist nur eine Warnung; ignoriere es. – Bohemian

Antwort

0

Hier gibt es nicht viel zu tun.

ois.readObject(); hat Rückgabetyp Objekt; einfach weil der Stream nicht wissen kann, welcher Inhalt in einem beliebigen Stream ist. Aber Sie sagen dem Compiler: "Ich denke, es muss eine ArrayList sein". Und der Compiler sagt dir: "Das kannst du nicht wissen!"

Sie können entweder den Typ des Objekts mit instanceof überprüfen oder die Annotation verwenden, um die Warnung zu unterdrücken.

Die sicherere Lösung ist natürlich, nur dann zu tun, wenn das Objekt tatsächlich instanceof ArrayList ist.

Oder Sie können diese Warnung hier ("sicher") ignorieren. Wie Sie wissen, was Sie in diese Datei geschrieben haben. Aber wenn du versaust, riskierst du zur Laufzeit eine Ausnahme.

Verwandte Themen