2016-07-19 8 views
2

Ich verwende den folgenden Code, um Daten aus einer Datei auf meinem Desktop zu erhalten, um in das Spiel, das ich mache, einzugeben.Java-Serialisierung und Umgang mit Objekten

Es gibt auch einen Abschnitt, der das Player-Objekt aufnimmt und in eine Datei eingibt.

player realPlayer = new player(); 
realPlayer.name = newName; 
realPlayer.gender = newGender; 
realPlayer.hasStarted = false; 
try { 
    FileOutputStream fileOut = new FileOutputStream("/Users/Prodigy958/Desktop/Hack_exeSaves.ser"); 
    ObjectOutputStream out = new ObjectOutputStream(fileOut); 
    out.writeObject(realPlayer); 
    out.close(); 
    fileOut.close(); 
} catch(IOException i) { 
    i.printStackTrace(); 
} 

Das Problem, das ich habe, ist, dass, wenn Sie mehr als ein Spieler Daten auf die Datei zu speichern, es Fehler abruft, weil es alle Daten nimmt und verwandelt es in ein Spielerobjekt. Kennen Sie einen einfachen Weg, um die Daten zu teilen? Ich habe darüber nachgedacht, mehrere Dateien zu verwenden, um die Daten jedes anderen Objekts zu speichern. Ich habe auch die Daten herausgenommen und in einzelne Objekte aufgeteilt, um dann von dort aus zu arbeiten, aber ich weiß nicht, wo ich mit dem zweiten anfangen soll.

+3

Was ist mit der Serialisierung eines Sets oder einer HashMap von Spielern? – BCartolo

+0

@ BCartolo was würde das tun? Das Problem ist, dass es nicht immer mehrere Spieler in der Datei gibt. – Shaydoth

+1

Und Set der Größe 1 passt dir nicht, weil .....? – whitesite

Antwort

2

Wie von anderen bereits vorgeschlagen, verwenden Sie eine serialisierbare Implementierung von java.util.Collection. (Die meisten java.util Sammlungen - wie java.util.ArrayList und java.util.HashSet - sind serialisierbar.) Eine Sammlung von 0 oder 1 Elementen sollte Sie nicht stören (es ist nicht relevant für die Serialisierung der Sammlung), es sei denn, Ihr Spiel hat andere Aufgaben Anforderungen, die sich interessieren, aber ... in diesem Fall, das ist weit über den Rahmen dieser Frage hinaus, und für Sie selbst zu handhaben.