Modification de variable passée en paramètre (question de noob) - Java - Programmation
Marsh Posté le 24-01-2005 à 15:46:38
Référence OK, mais sais-tu ce que sont les objets immutables ?
Marsh Posté le 24-01-2005 à 15:46:58
tu rebind juste variable vers un autre Integer. var ne change pas. De puis les Integer sont immutables. Donc même si c'était faisable, ça le serait pas
Marsh Posté le 24-01-2005 à 15:50:26
Taz a écrit : Donc même si c'était faisable, ça le serait pas |
Ca au moins, c'est clair
Marsh Posté le 24-01-2005 à 15:52:18
Ta méthode reçoit une copie de la référence passée en parametre donc à ce moment là, tu as 2 variables référençant le même objet.
Si tu fais en sorte qu'une des 2 variables référence un autre objet, cela n'implique pas que les autres variables changent.
Je sais pas si j'ai été clair...
Marsh Posté le 24-01-2005 à 16:03:29
bidem a écrit : Ta méthode reçoit une copie de la référence passée en parametre donc à ce moment là, tu as 2 variables référençant le même objet. |
Si j'ai bien compris, c'est la différence, en C, entre faire
void setTo2(int *variable) (ce que fait java ici)
et void setTo2(int **variable)
En C, la première solution me permet de modifier le contenu de variable, mais pas ici car Integer est immutable (on peut pas modifier son contenu).
Donc pour "modifier" un Integer, faut que je fasse pointer sur un autre integer, donc faut que je modifie ce vers quoi la référence pointe, donc faut utiliser la seconde solution qui n'existe pas en java.
J'ai compris ou je dis n'importe quoi ? Et quelle est la solution alors pour faire cette opération ?
Marsh Posté le 24-01-2005 à 16:10:19
en java, tu ne peux pas modifier directement le paramètre, ou plutot, ca n'a pas d'incidence sur l'appelant. Par contre, tu peux modifier l'état de l'objet, c'est à dire appeler des méthodes qui vont modifier l'état interne (modifier ses attributs) des objets passés en paramètres.
ex :
Code :
|
Code :
|
Marsh Posté le 24-01-2005 à 16:53:29
Je pensais effectivement à ça (je le fais en général, c'est d'ailleurs pour ça que j'ai jamais eu à me poser cette question) mais bon je pensais pas que c'était indispensable dans ce cas...
Merci !
Marsh Posté le 24-01-2005 à 15:42:50
Bonjour ! Problème de base, mais que je me pose pour la première fois depuis que je code en java.
De ce que j'ai pu lire partout, en java le passage de paramètre se fait toujours par référence (sauf pour les types primitifs). Pourtant, le code suivant :
Me donne comme résultat "15". Où est l'erreur ?
Merci d'avance