Call by Value/Reference

  • Themenstarter Themenstarter BVscrib
  • Beginndatum Beginndatum
B

BVscrib

Gast
Hi!

Ich bin etwas verwirrt. Nehmen wir an, ich hätte folgende Klasse:

Java:
public class MyClass {
    List <Object> objects;
    ....
}

nun mache ich folgendes in einer anderen Klasse:
Java:
MyClass my = new MyClass();
List<Object> myObjects = my.getObjects();
myObjects.add(new Object());

Dann ist das neue Object nicht in "my" unter "objects" abgespeichert. Warum? Ich dachte, Java verwendet immer call by value, aber hier ist eben der value von myObjects die Referenz auf MyClass.objects.

Versteht ihr das?
 
Dann ist das neue Object nicht in "my" unter "objects" abgespeichert.
Gibt getObjects() wirklich die Instanzvariable "objects" zurück? Oder eventuell eine (lazy) kreierte neue Liste? Denn, wenn getObjects() wriklich die Instanzvariable zurück gibt, dann wird es in genau der Liste abgespeichert und ist dort auch sichtbar.
 
ach sorry, ich bin blöd. Ja, getObjects() gibt lediglich eine Kopie zurück. Aber wenigstens habe ich das ganze dann eigentlich richtig verstanden ;-)
Damit hat sich das hier schon erledigt.
 

Neue Themen


Zurück
Oben