Hallo,
ich arbeite zur Zeit an einem TippSpiel-Programm, dass, wenn man es beendet alle bekannten Spieler (die tippen) und alle bekannte Spiele (für die getippt wird) per FileOutputStream jeweils als ArrayList speichert.
Nun habe ich eine Frage (ich suche nach einem Fehler, und möchte wissen ob das die Ursache sein könnte):
Es gibt wie gesagt die ArrayList<Spiel> alleSpiele und die ArrayList<Spieler> alleSpieler, die gespeichert werden. Wenn ich die Datei wieder lade (FileInpuStream) werden in beiden Klassen (Spiel und Spieler) die entsprechenden statischen Variablen per Setter-Methode eingestellt.
Der Fehler/das Problem liegt hier: man muss sich für Spiele (für die man tippen möchte) als Spieler anmelden. Dabei werden für jedes Spiel (aus der statischen Variable der Klasse Spiel), für das der Spieler noch nicht angemeldet ist, JButtons angezeigt.
Beim Neustart des Programms (wenn die oben genannten Objekte wieder geladen werden) werden alle Spiele, obwohl der Spieler dafür angemeldet ist, nochmals bei der Spielanmeldung angezeigt.
Meine Vermutung ist, dass, da die Spiele (Referenzen), für die ein Spieler angemeldet ist, mit der ArrayList<Spieler> serialisiert werden (als Instanzvariablen für die Spieler) bei der Deserialisierung nicht auf mehr die gleichen Objekte auf dem Heap zeigen wie die gespeicherten Spiele in der ArrayList<Spiel> alleSpiele. Somit kann ich nicht mehr sagen:
Wenn die Referenzen nicht mehr auf das selbe Objekt auf dem Heap zeigen, wie bekomm ich das hin ?
Ich hoffe ich konnte das Problem ausreichend gut schildern und ihr könnt mir weiterhelfen.
Danke schonmal !
ich arbeite zur Zeit an einem TippSpiel-Programm, dass, wenn man es beendet alle bekannten Spieler (die tippen) und alle bekannte Spiele (für die getippt wird) per FileOutputStream jeweils als ArrayList speichert.
Nun habe ich eine Frage (ich suche nach einem Fehler, und möchte wissen ob das die Ursache sein könnte):
Es gibt wie gesagt die ArrayList<Spiel> alleSpiele und die ArrayList<Spieler> alleSpieler, die gespeichert werden. Wenn ich die Datei wieder lade (FileInpuStream) werden in beiden Klassen (Spiel und Spieler) die entsprechenden statischen Variablen per Setter-Methode eingestellt.
Der Fehler/das Problem liegt hier: man muss sich für Spiele (für die man tippen möchte) als Spieler anmelden. Dabei werden für jedes Spiel (aus der statischen Variable der Klasse Spiel), für das der Spieler noch nicht angemeldet ist, JButtons angezeigt.
Beim Neustart des Programms (wenn die oben genannten Objekte wieder geladen werden) werden alle Spiele, obwohl der Spieler dafür angemeldet ist, nochmals bei der Spielanmeldung angezeigt.
Meine Vermutung ist, dass, da die Spiele (Referenzen), für die ein Spieler angemeldet ist, mit der ArrayList<Spieler> serialisiert werden (als Instanzvariablen für die Spieler) bei der Deserialisierung nicht auf mehr die gleichen Objekte auf dem Heap zeigen wie die gespeicherten Spiele in der ArrayList<Spiel> alleSpiele. Somit kann ich nicht mehr sagen:
Java:
if(angemeldeterSpieler.getSpiele().contains(spielAusArrayList)) //nur true wenn gleiches Objekt auf Heap (?)
{
//JButtons erstellen für Anmeldung
}
Wenn die Referenzen nicht mehr auf das selbe Objekt auf dem Heap zeigen, wie bekomm ich das hin ?
Ich hoffe ich konnte das Problem ausreichend gut schildern und ihr könnt mir weiterhelfen.
Danke schonmal !
Zuletzt bearbeitet: