Hi!
Wenn ich alles richtig verstanden habe, dann ist das in Java ja so:
Hat eine Klasse A ein public Feld F, so kann über eine Instanz a der Klasse A über a.F = 30 (Beispiel für primitiven Typ) oder a.F = new Konstruktor() (Beispiel für Objekttyp) das Feld manipuliert werden.
Mache ich aber F private und lasse es einen Getter returnen, so wird im Fall eines primitiven Feldes der primitive Typ per value übergeben und im Fall eines Objekttypes eine Referenz auf das Feld per value übergeben. Im ersten Fall kann ich so das Feld offensichtlich nicht manipulieren. Erhalte ich im zweiten Fall eine Referenz r, so verändere ich über f = new Konstruktor() nicht das Feld F (die Referenz, über die auf das eigentliche Objekt von F zugegriffen wird, bleibt unverändert). Vielmehr zeigt r nun auf ein neues Objekt.
In C kann man nun Pointer auf Pointer returnen lassen, und über die Kopie des Pointers auf einen Pointer dann auf Java übertragen das eigentliche Objekt in der Klasse A ändern.
Meine Frage nun: Kann man in Java auch Referenzen auf Referenzen übergeben? Oder ist die einzige Möglichkeit ein privates Feld zu ändern, eine Methode in der Klasse anzubieten?
Wenn ich alles richtig verstanden habe, dann ist das in Java ja so:
Hat eine Klasse A ein public Feld F, so kann über eine Instanz a der Klasse A über a.F = 30 (Beispiel für primitiven Typ) oder a.F = new Konstruktor() (Beispiel für Objekttyp) das Feld manipuliert werden.
Mache ich aber F private und lasse es einen Getter returnen, so wird im Fall eines primitiven Feldes der primitive Typ per value übergeben und im Fall eines Objekttypes eine Referenz auf das Feld per value übergeben. Im ersten Fall kann ich so das Feld offensichtlich nicht manipulieren. Erhalte ich im zweiten Fall eine Referenz r, so verändere ich über f = new Konstruktor() nicht das Feld F (die Referenz, über die auf das eigentliche Objekt von F zugegriffen wird, bleibt unverändert). Vielmehr zeigt r nun auf ein neues Objekt.
In C kann man nun Pointer auf Pointer returnen lassen, und über die Kopie des Pointers auf einen Pointer dann auf Java übertragen das eigentliche Objekt in der Klasse A ändern.
Meine Frage nun: Kann man in Java auch Referenzen auf Referenzen übergeben? Oder ist die einzige Möglichkeit ein privates Feld zu ändern, eine Methode in der Klasse anzubieten?