Collections Verständnisfrage zu Objektreferenzen in Listen

RalleYTN

Bekanntes Mitglied
Hallo Leute!

Ich habe mal eine kleine Verständnisfrage.
Nehmen wir einmal an ich habe ein Objekt und füge es einer Liste hinzu.
Wenn ich nun etwas mit dem Objekt ohne es über die Liste zu erhalten, ist das Objekt, welches sich in der Liste befindet dann immer noch identisch mit dem Objekt, dass ich nach dem Hinzufügen in die Liste bearbeitet habe?
 
Java arbeitet (fast) ausschließlich mit Zeigern bzw. Referenzen. Wenn du ein Objekt in eine Liste gibst, oder an eine Funktion übergibst, übergibst du immer nur eine Referenz. Es haben also dann mehrere Klassen Zugriff auf das selbe Objekt. Umgekehrt ist es gar nicht so leicht, von einem Objekt eine Kopie anzulegen. Dazu muss man nämlich ein komplett neues Objekt erstellen und alle Daten einzeln in das neue Objekt kopieren.
Das einzige, das in Java "by value" übergeben wird, sind die einfachen Datentypen wie int, float, boolean, usw.
 
Das einzige, das in Java "by value" übergeben wird, sind die einfachen Datentypen wie int, float, boolean, usw.

Diese Aussage ist nicht richtig. Mit deiner Aussage würdest du sagen das Objekte mit "call by reference" übergeben werden.
In Java wird nur mit "call by value" gearbeitet. Du hast zwar recht das bei Objekten eine Referenz übergeben wird, hier wird aber eine Kopie der Referenz übergeben.

Wäre es anders könnte man in der Methode ein neues Objekt erstellen und auch der Aufrufer hätte dann das neue Objekt verfügbar.

EDIT: Hier habe ich nun selbst etwas falsche geschrieben. Es wird nicht eine Kopie der Referenz sondern das eigentliche Objekt übergeben, also der Value der Referenz.
 
Zuletzt bearbeitet:
So gesehen wäre ja selbst bei C++ alles call-by-value 😉

Ansich hast du ja recht, aber letztendlich gehts ja darum, daß ein Objekt selbst niemals durch eine Parameterübergabe kopiert wird, ein int aber schon. Wenn in einer Funktion der Inhalt eines Objekts manipuliert wird, ändert sich auch das Objekt außerhalb, und Java bietet keine Möglichkeit das zu unterbinden.
 

Neue Themen


Zurück
Oben