Attributs, constructeurs et initialisation
Bonjour,
ne développant pas en java/objet depuis longtemps j'ai une question existentielle sur la création d'une classe métier, avec ou non l'initialisation de ses attributs.
Je m'explique : imaginons une class ayant 3 atttributs de type String, un attribut de type List<String>, un d'un type "personnalisé" (d'une autre classe) et un de type int.
En gros ceci :
Code:
1 2 3 4 5 6 7 8 9
|
public class My_New_Class {
private int id;
private String myString1;
private String myString2;
private String myString3;
private List<String> myList1;
private MyObject myObject1;
} |
Imaginons 2 constructeurs différents :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
public class My_New_Class {
...
public My_New_Class(String myString1, String myString2){
this.myString1 = myString1;
this.myString2 = myString2;
}
public My_New_Class(String myString1, String myString2, String myString3){
this.myString1 = myString1;
this.myString2 = myString2;
this.myString3 = myString3;
}
} |
Quand faut il initialiser directement les attributs dans leur déclaration ?
Je pars du principe (enfin ma logique) qu'il faut initialiser les objets "complexes" si il ne le sont pas dans les constructeurs.
Ici :
Code:
1 2 3
|
private List<String> myList1 = null;
private MyObject myObject1 = null; |
Et j'aurais tendance à initialiser aussi les types "primitifs" qui ne sont pas commun à tous les constructeurs.
Ici, j'aurais fait :
Code:
1 2 3 4
|
private int id = -1;
...
private String myString3 = null; |
Donc en gros, cela donnerait ceci au final :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
|
public class My_New_Class {
private int id = -1;
private String myString1;
private String myString2;
private String myString3 = null;
private List<String> myList1 = null;
private MyObject myObject1 = null;
public My_New_Class(String myString1, String myString2){
this.myString1 = myString1;
this.myString2 = myString2;
}
public My_New_Class(String myString1, String myString2, String myString3){
this.myString1 = myString1;
this.myString2 = myString2;
this.myString3 = myString3;
}
} |
Selon vous, est ce bon ? ou généralement on évite de le faire dans la déclaration, et on initialise tout dans chaque constructeur ?
Par avance merci.