Hallo,
ich habe folgende zwei Klassen beispielhaft für meine Problematik geschrieben:
Wenn ich nun eine ItemCollection instanziiere, ihr Item Objekte hinzufüge und danach jene verändere, wird ordnungsgemäß die ItemCollection benachrichtigt.
Wenn ich jedoch die ItemCollection serialisiere und danach deserialisiere sind die Observer-Beziehungen verschwunden.
Ich vermute, dass das daran liegt, dass Observer nicht Serializable implementiert.
ItemCollection ist zwar Serializable, aber die addObserver() Methode von Item erwartet ja nur Observer und keine ItemCollection.
Hat jemand eine Idee, was ich tun könnte, damit nach dem Deserialisieren die Observer-Beziehungen noch da oder wieder hergestellt werden können?
lg Stephan
ich habe folgende zwei Klassen beispielhaft für meine Problematik geschrieben:
Code:
public class Item extends Observable implements Serializable {
private String data;
public Item(String data) {
this.data = data;
}
public String getData() {
return data;
}
public void setData(String data) {
this.data = data;
setChanged();
notifyObservers();
}
}
Code:
public class ItemCollection implements Observer, Serializable {
private Vector<String> items;
public ItemCollection() {
items = new Vector<String>();
}
public void addItem(Item item) {
items.add(item);
item.addObserver(this);
}
public void update(Observable o, Object arg) {
System.out.println("Ich wurde benachrichtigt.");
}
}
Wenn ich nun eine ItemCollection instanziiere, ihr Item Objekte hinzufüge und danach jene verändere, wird ordnungsgemäß die ItemCollection benachrichtigt.
Wenn ich jedoch die ItemCollection serialisiere und danach deserialisiere sind die Observer-Beziehungen verschwunden.
Ich vermute, dass das daran liegt, dass Observer nicht Serializable implementiert.
ItemCollection ist zwar Serializable, aber die addObserver() Methode von Item erwartet ja nur Observer und keine ItemCollection.
Hat jemand eine Idee, was ich tun könnte, damit nach dem Deserialisieren die Observer-Beziehungen noch da oder wieder hergestellt werden können?
lg Stephan