Java Serialisierung Singleton

  • Themenstarter Themenstarter Lec123
  • Beginndatum Beginndatum
L

Lec123

Gast
Hallo,

ich habe eine Klasse "A" die Ein Attribut ( eine Nummer vom typ int die einzigartig sein soll) der Klasse von einer Klasse bekommt die als Singleton implementiert ist.
Die Singleton Klasse hat eine LinkedList<Integer> die alle Nummern speichert und wenn eine neue nummer benötigt wird nachseht
ob die schon vergeben ist und eine andere erzeugt.
Ich speichere die Objekte der Klasse A in einer HashMap. Die HashMap wird serialisiert.

Alle Klassen implementieren die Schnittstelle Serializable.

Problem: Wenn ich meine Binärdatei wieder lade, und neue Objekte von A erstelle, vergibt die SingletonKlasse die Nummer die schon vergeben worden ist vor der Speicherung. Wie stelle ich sicher dass auch die LinkedList<Integer> mitgespeichert ( durch Serialisierung )wird.

Danke im Voraus
Lec123
 
Klasse A
hat ein Attribut int nummer;
nummer wird durch B.getInstance.generateNumber() initialisiert.

Objekte der Klasse A werden in einer HashMap abgelegt die danach mit Hilfe der Serialisierungs Schnittstelle in einer Binärdatei gespeichert wird.

Klasse B im Singleton Muster geschrieben.
Hat eine LinkedList<Integer> wo die Nummern gespeichert werden.
Hat eine Methode generateNumber() die eine Nummer generiert und nachschaut ob die nummer schon vergeben ist, wenn ja wir die erneut generiert.

Mein Problem, wie oben schon beschrieben, wenn ich die Binärdatei wieder lade und neue Objekte der Klasse A erzeuge werden nummern vergeben die vor dem speichern schon vergeben wurden.

Bsp.

vor dem Speichern
Obj1 nummer=100;
Obj2 nummer=101;
Obj3 nummer=102;

Nach dem Speichern und Laden
Obj1 nummer=100;
Obj2 nummer=101;
Obj3 nummer=102;

neues Objekt:
Obj4 nummer=100;
Obj5 nummer=101;
etc..
 
Was genau serialisierst du denn? Objekte der Klasse A? Dann weiß doch der Singleton gar nicht, dass er die Nummer im früheren Leben bereits vergeben hat.
 
Genau das ist mein Problem. Hab schon versucht ein Objekt des Singleton in der Klasse A abzulegen und dann zu serialisisren. Ging trozdem nicht.
 

Zurück
Oben