Hallo,
die Frage ist wahrscheinlich einfach, aber ich komm nicht drauf, was ich machen muss.
Also ich habe Buch-Objekte, die eine eindeutige ID haben müssen. Diese Objekte sind alle in einer Hashtable eines anderen Bibliothek-Objekts gespeichert. Der Schlüssel in der Hashtable ist die eindeutige ID und der Wert das Buch-Objekt. Das Problem ist, die ID des Buch-Objekts kann geändert werden.
Ich möchte also den ID-Wert ändern und schicke deshalb eine Nachricht an das Bibliotheks-Objekt, in dessen Hashtable das Buch-Objekt gespeichert ist. Dort muss ich nun nachschauen ob es schon ein Buch-Objekt mit derselben ID gibt. Wenn es so ein Buch-Objekt gibt werfe ich eine Exception und der Wert des Buch-Objekts wird nicht geändert. Wenn es kein solches Buc-Objekt gibt, schicke ich wieder eine Nachricht an das Bibliotheks-Objekt mit der Hashtable und füge dort das Buch-Objekt ein.
Das Problem ist nun, wie kann man verhindern, dass inzwischen in die Hashtable des Bibliothek-Objekts ein neues Buch-Objekt eingefügt wird? Denn dann dürfte das Buch-Objekt mit der ID doch nicht eingefügt werden.
Dass das Buch-Objekt nicht in der Zwischenzeit geändert wird, kann ich ja erreichen indem die set-Methode der ID synchronized ist. Aber geht es irgendwie, dass auch in die Hashtable des Bibliothek-Objekts in der Zwischenzeit nichts eingefügt werden darf?
Oder gibt es irgendeinen anderen sinnvollen Ansatz so etwas zu realisieren?
die Frage ist wahrscheinlich einfach, aber ich komm nicht drauf, was ich machen muss.
Also ich habe Buch-Objekte, die eine eindeutige ID haben müssen. Diese Objekte sind alle in einer Hashtable eines anderen Bibliothek-Objekts gespeichert. Der Schlüssel in der Hashtable ist die eindeutige ID und der Wert das Buch-Objekt. Das Problem ist, die ID des Buch-Objekts kann geändert werden.
Ich möchte also den ID-Wert ändern und schicke deshalb eine Nachricht an das Bibliotheks-Objekt, in dessen Hashtable das Buch-Objekt gespeichert ist. Dort muss ich nun nachschauen ob es schon ein Buch-Objekt mit derselben ID gibt. Wenn es so ein Buch-Objekt gibt werfe ich eine Exception und der Wert des Buch-Objekts wird nicht geändert. Wenn es kein solches Buc-Objekt gibt, schicke ich wieder eine Nachricht an das Bibliotheks-Objekt mit der Hashtable und füge dort das Buch-Objekt ein.
Das Problem ist nun, wie kann man verhindern, dass inzwischen in die Hashtable des Bibliothek-Objekts ein neues Buch-Objekt eingefügt wird? Denn dann dürfte das Buch-Objekt mit der ID doch nicht eingefügt werden.
Dass das Buch-Objekt nicht in der Zwischenzeit geändert wird, kann ich ja erreichen indem die set-Methode der ID synchronized ist. Aber geht es irgendwie, dass auch in die Hashtable des Bibliothek-Objekts in der Zwischenzeit nichts eingefügt werden darf?
Oder gibt es irgendeinen anderen sinnvollen Ansatz so etwas zu realisieren?