Le problème viens du fait que Integer n'est pas un type primitif, mais un objet immuable : il n'existe aucune méthode permettant de modifier sa valeur.
Jusqu'en java 1.4, on ne pouvait pas faire le moindre calcul avec les objets.
Depuis java 1.5 et l'arrivée de l'autoBoxing/autoUnboxing, les Objets représentant un type(Integer/Byte/Long...) sont automatiquement convertis en leur type primitif équivalent, mais ce n'est jamais que du sucre syntaxique : v étant immuable, si tu lui affecte une valeur, il est créé un nouvel objet.
Par exemple dans ton code:
1 2 3
| v += 1
// équivaut en fait a un
v = new Integer(v.intValue()++); |
L'objet auquel v faisait référence n'est donc pas modifié.
Partager