Hallo,
ich habe 3 Klassen, die alle miteinander Verbunden sind:
Klasse 1 - Netz - enthält eine Hashmap<String, Knoten> aller Knoten mit einem Schlüßel
Klasse 2 - Halte- enthält eine Hashmap<Halte, Kante> aller verbundenen Knoten und Kanten, die die Kante genauer beschreiben
Klasse 3 - Kanten - enthält unter anderem die entfernung + weitere attribute
Wenn ich das Netz serialisieren will, erhalte ich folgende Exceptions
Was mache ich falsch?
Es funktioniert, wenn ich in der Klasse Halte nicht die verbunden Halte sondern nur deren Schlüßel speichere... nur ist das uneffektiv, da ich bei jedem zugriff dann die Halte erst wieder aus der HashMap des Netzes holen muss.
Meine Vermutung: Irgendwie kommt er damit nicht klar eine simple Referenz auf das Objekt Halt, das ja schon im Netz serialisiert wurde zu speichern, wenn die verbundenen Knoten gespeichert werden sollen.
Für Hilfe wäre ich sehr dankbar
ich habe 3 Klassen, die alle miteinander Verbunden sind:
Klasse 1 - Netz - enthält eine Hashmap<String, Knoten> aller Knoten mit einem Schlüßel
Klasse 2 - Halte- enthält eine Hashmap<Halte, Kante> aller verbundenen Knoten und Kanten, die die Kante genauer beschreiben
Klasse 3 - Kanten - enthält unter anderem die entfernung + weitere attribute
Wenn ich das Netz serialisieren will, erhalte ich folgende Exceptions
Code:
Exception in thread "main" java.lang.StackOverflowError
at sun.reflect.GeneratedMethodAccessor6.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:945)
at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1461)
at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1392)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1150)
at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1509)
at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1474)
at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1392)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1150)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:326)
at java.util.HashMap.writeObject(HashMap.java:1001)
at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:945)
at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1461)
at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1392)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1150)
at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1509)
at java.io.ObjectOutputStream.defaultWriteObject(ObjectOutputStream.java:416)
at mapapp.datatypes.DtHalt.writeObject(DtHalt.java:86)
at sun.reflect.GeneratedMethodAccessor5.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:945)
at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1461)
at
So ich kürz das hier mal ab, obwohl noch ca. 60.000 Zeichen kommen ;)
Was mache ich falsch?
Es funktioniert, wenn ich in der Klasse Halte nicht die verbunden Halte sondern nur deren Schlüßel speichere... nur ist das uneffektiv, da ich bei jedem zugriff dann die Halte erst wieder aus der HashMap des Netzes holen muss.
Meine Vermutung: Irgendwie kommt er damit nicht klar eine simple Referenz auf das Objekt Halt, das ja schon im Netz serialisiert wurde zu speichern, wenn die verbundenen Knoten gespeichert werden sollen.
Für Hilfe wäre ich sehr dankbar
