Bonjour à tous,

j'aurais une question qui m'embrouille sur un exemple que j'ai trouvé sur un livre sur la programmation concurrente en java dans le quel on donne un exemple d'une classe qui est modifiable alors que moi je pense qu'elle ne l'est pas.

la classe en question est la suivante

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
public class Holder { 
  private int n; 
  public Holder(int n) { this.n = n; } 
  public void assertSanity() { 
    if (n != n) 
      throw new AssertionError("This statement is false."); 
  } 
}
et qui sera appelée par des threads dans un bout de programme comme le suivant :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
public Holder holder; 
public void initialize() { 
  holder = new Holder(42); 
}
Donc, qd je regarde l'exemple je suis un peu confus, car une classe immutable est une classe dans la quelle chaque référence d'objet de cette classe ne peux pas changer la valeurs de ces champs une fois construits.

Pour moi, la classe Holder est immutable par costruction, même si le int n de l'objet holder n'est pas final !!!

Est ce que quelqu'un aurait une explication et pourrais me dire dans quelle cas un objet holder pourrait changer de valeur (d'état) sans changer de référence ?

Merci d'avance pour votre aide.