[Constructeur / Champs] Pb Valeurs null
Bonjour,
J'ai un petit problème d'initialisation de champs dans une classe, et j'aimerais savoir ce que je fais de mal :aie:
Pour extrait les deux classes utilisées :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| public class Accord extends Donnees {
//Un champ de classe
private ArrayList champ = null;
//Constructeur
public Accord(String[] champs){
super(champs);
}
//Méthode appelée par la classe mère
public void setChamps(){
// Faute corrigée
this.champ = new ArrayList();
this.champ.add("Test");
}
//Retourne la liste
public ArrayList getListeChamp(){
return this.champ;
}
} |
Code:
1 2 3 4 5 6 7 8 9
| abstract public class Donnees {
//Constructeur
public Donnees(String[] champs){
this.setChamps();
}
//Méthode abstract
abstract public void setChamps();
} |
Le problème est qu'après instanciation, l'ArrayList "champs" est null :
Code:
1 2 3
| Accord obj = new Accord(blabla);
ArrayList uneListe = obj.getListeChamp();
//uneListe est null |
En remplaçant "private ArrayList champ = null;" par "private ArrayList champ;", ça marche, mais je m'inquiète car je fais cette définition très souvent (ou "private ArrayList champ = new ArrayList();", et ça m'inquiète de ne pas avoir rencontré ce problème plus tôt.
Ai-je vraiment de quoi m'inquiéter, ou y-a-t-il quelque chose que je fais mal ?
Quels seraient les risques à remplacer toutes ces déclarations ("private ArrayList champ = null;" par "private ArrayList champ;") ?