PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Java - ein Objekt in zwei Listen


Gast
2007-11-19, 13:08:43
Hallo,
ich habe ein Problem bzw leichte Verständnisschwierigkeiten beim Hantieren mit Objekten, Arrays und Referenzen:

Ich habe ein Objekt und möchte es in zwei Listen einhängen.

Käse k = new Käse(); // das Objekt

ArrayList<Käse> liste1 = new ArrayList<Käse>; // zwei Listen mit Käse-Objekten
ArrayList<Käse> liste2 = new ArrayList<Käse>;

liste1.add( k );
liste2.add( k );

Wenn ich nun Eigenschaften des eingefügten Objekts k in liste1 ändere, ändern sich dann auch die Eigenschaften des Objekts k in liste2?
Oder habe ich nun quasi drei Objekte: das listenlose k, das k in liste1 und das k in liste2?!

Trap
2007-11-19, 13:37:23
In dem Beispiel gibt es nur ein Objekt Käse.

Generell erzeugt Java keine neuen veränderbaren Objekte, außer man fordert es explizit mit new.

Shink
2007-11-19, 13:48:20
Ja, in Java übergibt man bei Funktionsaufrufen immer die Referenz auf ein Objekt; außer bei primitiven Datentypen (int, float, byte, boolean etc.).

Gast
2007-11-19, 15:57:36
Ok, danke.

Und was passiert, wenn nach den beiden Einfüge-Operationen k = null gesetzt wird?
Dann "zeigt" der "k-Zeiger" nirgendwo mehr hin, aber in den Listen ist nachwievor die Referenz auf das vorher erzeugte Käse-Objekt vorhanden.
Korrekt?

(Ich würds ja selber testen, aber ich bin nicht an meinem eigenen PC.)

Shink
2007-11-19, 16:15:37
Ja, korrekt: Und somit räumt der GC das Käse-Objekt auch nicht weg, da es ja noch 2 Referenzen drauf gibt.