Bonjour,
J'ai un petit problème d'initialisation de champs dans une classe, et j'aimerais savoir ce que je fais de mal
Pour extrait les deux classes utilisées :
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
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; } }Le problème est qu'après instanciation, l'ArrayList "champs" est null :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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(); }
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.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Accord obj = new Accord(blabla); ArrayList uneListe = obj.getListeChamp(); //uneListe est null
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;") ?
Partager