2016-04-04 12 views
0

Ich habe ein kleines Problem beim Lesen eines Objekts aus einer Textdatei, da es den folgenden Fehler vorgibt;JAVA - Probleme beim Laden einer objektbasierten Datei

Exception in thread "main" java.lang.ClassCastException: java.util.ArrayList cannot be cast to stock.control.system.StockItem 

was ist diese Linie;

StockItem result = (StockItem) ois.readObject(); 

unten ist, wie ich meine Datei speichern;

try { FileOutputStream fout = new FileOutputStream(filename); 
    ObjectOutputStream oos = new ObjectOutputStream(fout); 
    oos.writeObject(StockItems); } 
    catch (java.io.FileNotFoundException error) { 
     System.out.println("FILE NOT FOUND!"); 
    } 

und hier ist, was ich bis jetzt für das Laden der Datei zurück in ein Objekt ArrayList getan habe;

wenn mich irgendwo erziehen könnte, damit es richtig gemacht werden kann, würde es sehr geschätzt werden.

+0

Was ist 'StockItems'? Ist das eine StockItem-Instanz? – starf

+0

Sie haben ein Objekt des Typs 'StockItem []' serialisiert und möchten das unserialisierte Objekt in 'StockItem' umwandeln? Dies muss fehlschlagen. Heben Sie die erneute Sortierung als Array auf. – blafasel

+0

Es sieht so aus, als ob Sie eine Arraylist "StockItems" schreiben, aber versuchen, ein "StockItem" zu lesen. –

Antwort

0

Ich musste nur die Ausgabe einer Array-Liste in einer Tester-Klasse zuweisen, die dann in eine Schnittstelle eingegeben wurde und innerhalb der Schnittstelle musste ich es in eine andere Array-Liste zuweisen, so habe ich diesen Fehler behoben .

0

Sieht aus wie die Datei nicht enthält, was Sie denken, dass es tut. Es enthält eine ArrayList, keine StockItem. Versuchen Sie das erste Element der Arraylist zu nehmen:

und sehen, welcher Typ das ist.

+0

Beachten Sie, dass Sie, wenn es sich um eine 'ArrayList' von' StockItem' handelt, möglicherweise nicht fertig sind! Wahrscheinlich möchten Sie die Liste durchlaufen und alle bearbeiten. – bl184999

+0

enthält es; [Item ID = P123, Artikelbeschreibung = 1 TB Festplatte, Preis = 75.0, Menge = 267, Re Order Level = 50] Geben Sie die Iterate über jedes Objekt, um sie jetzt zu speichern =) –

+0

Wodurch wurde die Datei erstellt? Wenn es kein 'ObjectOutputStream' wäre, der ein' StockItem' gespeist hätte, würde Java keine Zeichenkette in das Objekt umwandeln, in das Sie es umgewandelt haben. – bl184999

0

Der Fehler besagt, dass in die Datei eine ArrayList geschrieben wurde. Sieht so aus StockItems Sie schreiben ist ArrayList<StockItem>. Wenn Sie lesen, erhalten Sie die Array-Liste zurück, sodass Sie sie nicht in StockItem umwandeln können. Sie müssen es in ArrayList umwandeln und dann über die Liste iterieren und jedes Element auf StockItem umwandeln.