Bonjour à tous,
Petit exemple pour mon problème :
Et comme j'ai pu m'en rendre compte (dans la lune moi en ce moment) le println me donne "true 0".
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 public class ValeurParReference { /** * <p> * Méthode principale * </p> * @param args */ public static void main(String[] args) { Integer value = new Integer(0); boolean result = testIntegerChange(true, value); System.out.println(String.valueOf(result) + " " + value); } /** * <p> * Test changement de valeur d'un Integer * </p> * @param test * @param value * @return */ public static boolean testIntegerChange(boolean test, Integer value) { if (test) { value = new Integer(3); return true; } else { value = new Integer(6); return false; } } }
Ce qui est normal vu que je change la valeur dans la fonction en créant un nouvel objet Integer donc les références ne sont plus les mêmes et je garde ma valeur initial de 0 plutôt que 3.
Avec un String c'est pareil, le mieux étant je pense (je test tout de suite) d'utiliser un StringBuffer, faire un clear sur son contenu et mettre ma nouvelle valeur dedans.
Mais cette solution ne me plaît pas : comment faut-il faire pour changer ma valeur d'Integer ? Ai-je oublié quelque chose ?
Merci d'avance
Partager