Moin... - ich bin immer noch bei meinem Problem Objekte "tief" zu kopieren, auch wenn mein ReflectionCopier inzwischen fertig ist, ist mir beim Implementieren aufgefallen, dass viele Klassen der Java-API Felder benutzen, die transient sind. Diese Felder sind dann aber auch noch nichtmal Attribute, die für den Objektzustand irrelevant sind sondern ganz im Gegenteil sehr relevant, wie etwa das Datenarray in einer ArrayList (private transient E[] elementData).
Meinem ReflectionCopier ist ein transient Feld momentan noch relativ egal, so dass ich das Feld einfach mitkopieren kann und im Ergebnis auch keine Probleme bekomme. Der ObjectOutputStream hingegen kann ja nicht auf dieses Feld direkt zugreifen und bemüht daher die write bzw. readObject-Methode der Klasse, die genau dieses Kopieren über nen gewissen Umweg ermöglicht.
Die Frage ist jetzt - warum macht man das so? Was ist der Vorteil, bzw. warum ist dieses Feld transient?
Ich hatte nämlich auch überlegt das transient Schlüsselwort zu nutzen, um dem Nutzer meines Copiers eine Möglichkeit zu geben, Felder explizit vor dem Kopieren zu schützen. Allerdings funktioniert das ganze dann natürlich überhaupt nicht mehr, da ich auf den Inhalt dieser Felder natürlich angewiesen bin
Meinem ReflectionCopier ist ein transient Feld momentan noch relativ egal, so dass ich das Feld einfach mitkopieren kann und im Ergebnis auch keine Probleme bekomme. Der ObjectOutputStream hingegen kann ja nicht auf dieses Feld direkt zugreifen und bemüht daher die write bzw. readObject-Methode der Klasse, die genau dieses Kopieren über nen gewissen Umweg ermöglicht.
Die Frage ist jetzt - warum macht man das so? Was ist der Vorteil, bzw. warum ist dieses Feld transient?
Ich hatte nämlich auch überlegt das transient Schlüsselwort zu nutzen, um dem Nutzer meines Copiers eine Möglichkeit zu geben, Felder explizit vor dem Kopieren zu schützen. Allerdings funktioniert das ganze dann natürlich überhaupt nicht mehr, da ich auf den Inhalt dieser Felder natürlich angewiesen bin