Tout d'abord, très bon achat ! Selon moi le meilleur livre pour apprendre à bien programmer en Java.
Pour répondre à ta question, tu appelles la méthodes setX() directement, sans lui donner un contexte d'objet. Tu appelles donc une méthode d'instance dans un contexte static.
Pour que ton programme fonctionne, il faut changer la ligne :
Par
Afin d'exécuter la méthode setX dans le contexte de l'instance aaa01.
Le principe de l'item 1 d'EJ, c'est de pouvoir être maître des instances que l'on retourne. Exemple simple : parfois un objet doit être unique, on en fera un singleton. Parfois on en désire seulement deux en mémoire, ce n'est possible qu'en static.
On peut également nommer les méthodes.
Par exemple le code suivant :
List<Integer> list = new ArrayList<Integer>(2);
Signifie-t-il qu'on désire une ArrayList de taille 2 ? Ou plutôt qu'on désire une ArrayList contenant déjà l'élément 2 ?
Avec un constructeur nommé (donc une méthode statique), voici ce que l'on peut faire :
List<Integer> list = MyArrayList.newListWithCapacity(2);
Et
List<Integer> list = MyArrayList.newList(2);
Dans le premier cas, on a explicitement précisé qu'il s'agissait d'une arrayList dont on renseigne la taille.
Dans le second cas, nous documenterons le fait qu'on entre déjà la liste des éléments.
N'est-ce pas plus clair d'avoir des noms spécifiques ?
Partager