La littérature est pleine de contradiction à ce sujet, chaque auteur
ayant sa vision des choses.
J'aime bien la vision de Thinking in Java (Bruce Eckel), selon lequel:
en Java il y a des références. Bon, remarquez, c'est comme des pointeurs, hein ? Et oui, ce sont des pointeurs, mais débarassés de toute notion d'arithmétique de pointeurs. Des pointeurs, non déplaçables (donc qui ne pointeront jamais vers n'importe quoi).
Du jour où j'ai lu ça, moi, j'ai arrêté de me faire des noeuds.
Mais au fond on s'en fout un peu, parce que ça ne change rien. Dans la lignée de ces débats stériles, lorsque je passe Machin en paramètre d'une méthode, est-ce un passage par valeur ou par adresse/référence ?
Par contre, je n'avais jamais entendu parler de ce troll (ça veut bien dire ça, débat stérile ? :-). La réponse me semble immédiate: l'objet utilisé par la fonction appelé est le même, ie. toute opération effectuée dessus dans la fonction appelée sera vue dans la fonction appelante, une fois qu'on lui aura rendu la main. Les deux fonction référencent le même objet: c'est un passage par référence.
A comparer avec un passage d'int en paramètre (ou un autre type natif Java) où, si l'appelé modifie la valeur de son paramètre, cela ne se répercute pas dans la fonction appelante.
[^] # Re: kaffe n'est pas en reste non plus
Posté par alnicodon . En réponse à la dépêche [Débat] Implémentations libres de java : sont elles utilisées dans la pratique ?. Évalué à 3.
J'aime bien la vision de Thinking in Java (Bruce Eckel), selon lequel:
Du jour où j'ai lu ça, moi, j'ai arrêté de me faire des noeuds.
Par contre, je n'avais jamais entendu parler de ce troll (ça veut bien dire ça, débat stérile ? :-). La réponse me semble immédiate: l'objet utilisé par la fonction appelé est le même, ie. toute opération effectuée dessus dans la fonction appelée sera vue dans la fonction appelante, une fois qu'on lui aura rendu la main. Les deux fonction référencent le même objet: c'est un passage par référence.
A comparer avec un passage d'int en paramètre (ou un autre type natif Java) où, si l'appelé modifie la valeur de son paramètre, cela ne se répercute pas dans la fonction appelante.
Itou!