Dr$arez
Grünschnabel
Ich habe mich mehrfach belesen, aber nirgends eine SICHERE Aussage gesehen. Wenn ich jetzt eine Methode habe, der ich ein Objekt als Argument übergebe und ich nicht will, dass das Objekt seinen Zustand ändern kann, so würde ich den Parameter final setzen:
Jetzt stellt sich mir die Frage: wird das Argument myObject nun als clone übergeben? Die gefahr sehe ich, wenn das übergebene Objekt selber Methoden beinhaltet, die es verändert. Beispielsweise eine Methode
Nun hätte man ja doch die Möglichkeit über die Methode von myObject ein MyObject auch innerhalb des Methodenrumpfes zu verändern. Das final sagt ja dann nur aus, das ich den 'Zeiger' (tschuldigung) myObject innerhalb meines Methodenrufpes nicht neu referenzieren kann, Änderungen an den Objektattributen möglich sind?
Ist das so?
(Meine Lösung wäre in dem Falle in all jenen meinen Methodenblöcken eine Kopie des Arguments per MyObject copiedObject = myObject.clone() anzulegen...)
Code:
public void myFunction(final MyObject myObject){...}
Code:
public void multiply(double zahl){ internesAttribut *= zahl; }
Ist das so?
(Meine Lösung wäre in dem Falle in all jenen meinen Methodenblöcken eine Kopie des Arguments per MyObject copiedObject = myObject.clone() anzulegen...)