Java passage par reference

Fermé
ulquiorra
Messages postés
31
Date d'inscription
jeudi 6 septembre 2007
Statut
Membre
Dernière intervention
29 juillet 2009
- 21 juil. 2009 à 14:44
 Laule - 4 mai 2017 à 17:18
Bonjour,

j'ai une problème au niveau d'une methode que je viens de creer .
Cette methode recoit un argument de type short , elle lui affecte une valeur, mais le problème c que ca valeur ne change pas en dehors de la fonction

dans main () j'appelle la methode : i=0, affect(i); la méthode fait i=1; quand j'affiche la valeur de i c'est toujours 0;

je crois que je devrait passer l'argument par reference ou par adresse mais je ne sais pas comment le faire en java
A voir également:

4 réponses

Marco la baraque
Messages postés
996
Date d'inscription
vendredi 9 mai 2008
Statut
Contributeur
Dernière intervention
5 novembre 2009
326
9 oct. 2009 à 21:32
Bonsoir,
En java, tu ne peux pas choisir de passer tes paramètres par référence ou par valeur.
La règle est la suivante :
- ton paramètre est un objet, alors il est passé par référence
- ton paramètre est un type primitif, alors il est passé par valeur (par copie)

Donc si tu passe un short en paramètre, alors tu ne pourras pas modifier sa valeur initiale (tu vas changer la valeur de la copie, mais ça ne sera pas répercuté sur la variable initiale).
Si tu passes un Short, on peut imaginer modifier sa valeur interne, mais en fait non puisque Short est immutable (et final pour rien améliorer) :(

Donc une solution est de créer un pojo comme le suivant :
public class ShortContainer {
 private short value;
 
 public short getValue() { return this.value; }
 public void setValue(short value) { this.value = value; }
}


Voilà. C'est un peu dommage car au final c'est un peu comme si on utilisait un Short, mais bon ça répond à ton problème.

Cordialement,
38
J'ai le même problème en passant un Boolean. Cette réponse résout mon problème.
0