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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
    private int id = -1;
    ...
    private String myString3 = null;

Donc en gros, cela donnerait ceci au final :

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
 
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.