Le passage par valeur implique une copie dans des registres. Java ne fait pas de copie à chaque appel de méthode sur un objet, et heureusement !
L'exemple est stupide :
public void foo(Dog d) {
d = new Dog("Fifi"); // creating the "Fifi" dog
}
Dog aDog = new Dog("Max"); // creating the "Max" dog
// at this point, aDog points to the "Max" dog
foo(aDog);
La référence n'étant pas transmise, le comportement est logique. C'est le problème du "pointeur de pointeur" que l'on peut avoir parfois. Si au lieu de créer un nouveau chien, il changeant un champ de son chien, il verrait son erreur.
[^] # Re: Evite le C++
Posté par Nicolas Boulay (site web personnel) . En réponse au journal C(++) ?. Évalué à 2.
L'article raconte à peu prêt n'importe quoi.
Le passage par valeur implique une copie dans des registres. Java ne fait pas de copie à chaque appel de méthode sur un objet, et heureusement !
L'exemple est stupide :
La référence n'étant pas transmise, le comportement est logique. C'est le problème du "pointeur de pointeur" que l'on peut avoir parfois. Si au lieu de créer un nouveau chien, il changeant un champ de son chien, il verrait son erreur.
"La première sécurité est la liberté"