A
anonym
Gast
Hallo,
also: Wenn ich ein Objekt (beliebiger Typ) erzeuge und dann darauf toString() aufrufe (genaugenommen nutze ich ObjectUtil.identityToString(), weil's in einer Bibliothek ist und ich abfangen möchte, dass toString() überschrieben sein könnte, ich kann da wirklich alles kriegen!), bekomme ich einen String von der Art "pack.age.Class@12345abc". Das ist soweit toll.
Aber: Was passiert, wenn ich so ein Objekt erzeuge, toString() aufrufe, dass Ding benutzte (Eigenschaften ändere, Methoden darauf aufrufe, es als Parameter an Methoden übergebe, es vielleicht mal kurz mit JNI an C abgebe...hier kann wieder alles passieren, was der Benutzer meiner Bibliothek möchte), wird toString (bzw. ObjectUtil.identityToString()) dann zu einem späteren Zeitpunkt noch denselben String (bzw. einen String, der zu dem aus dem ersten Aufruf equals() ist) zurückgeben?
Insgesamt ist mir egal, was ich bekomme. Ich muss nur an der zweiten Stelle eindeutig feststellen können, ob es dasselbe Objekt ist, wie an der ersten Stelle. Bestenfalls ohne das Objekt selbst zu referenzieren, da ich den GC nicht stören möchte (kann auch sein, dass das Objekt an der zweiten Stelle nie ankommt).
Mein Plan B wäre ein Interface, dass eine getIdentifier()- Methode hat, die einen eindeutigen Wert für jedes Objekt zurükgeben muss. Daran stört mich allerdings, dass ich dann nicht mehr beliebige Objekte akzeptieren kann. Habt ihr sonst Vorschläge?
Schöne Grüße,
campino
also: Wenn ich ein Objekt (beliebiger Typ) erzeuge und dann darauf toString() aufrufe (genaugenommen nutze ich ObjectUtil.identityToString(), weil's in einer Bibliothek ist und ich abfangen möchte, dass toString() überschrieben sein könnte, ich kann da wirklich alles kriegen!), bekomme ich einen String von der Art "pack.age.Class@12345abc". Das ist soweit toll.
Aber: Was passiert, wenn ich so ein Objekt erzeuge, toString() aufrufe, dass Ding benutzte (Eigenschaften ändere, Methoden darauf aufrufe, es als Parameter an Methoden übergebe, es vielleicht mal kurz mit JNI an C abgebe...hier kann wieder alles passieren, was der Benutzer meiner Bibliothek möchte), wird toString (bzw. ObjectUtil.identityToString()) dann zu einem späteren Zeitpunkt noch denselben String (bzw. einen String, der zu dem aus dem ersten Aufruf equals() ist) zurückgeben?
Insgesamt ist mir egal, was ich bekomme. Ich muss nur an der zweiten Stelle eindeutig feststellen können, ob es dasselbe Objekt ist, wie an der ersten Stelle. Bestenfalls ohne das Objekt selbst zu referenzieren, da ich den GC nicht stören möchte (kann auch sein, dass das Objekt an der zweiten Stelle nie ankommt).
Mein Plan B wäre ein Interface, dass eine getIdentifier()- Methode hat, die einen eindeutigen Wert für jedes Objekt zurükgeben muss. Daran stört mich allerdings, dass ich dann nicht mehr beliebige Objekte akzeptieren kann. Habt ihr sonst Vorschläge?
Schöne Grüße,
campino