Bonjour.
Voici le code que j'ai tapé (en simplifiant. Les objets modele et controleur n'ont pas d'importance):
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
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
 
class AbstractVue {
 
	protected AbstractModele modele;
	protected Controleur controleur;
 
	//Constructeur
	public AbstractVue(AbstractModele modele, Controleur controleur) {
		this.modele = modele;
		this.controleur = controleur;
		this.initComposant();
	}
	protected abstract void initComposant();
}
 
 
 
class AbstractVueSwingAvecJTextField extends AbstractVue {
	//Constructeur
	public AbstractVueSwingAvecJTextField(Modele modele, Controleur controleur) {
		super(modele, controleur);
	}
 
	protected void initComposant() {
		//initialisation de composants (n'agit pas sur l'objet tableau)
		...
	}
 
	...
}
 
 
 
class VueSwing1 extends AbstractVueSwingAvecJTextField {
 
	private String[] tableau={"T1", "T2"};
	//Constructeur 
 
	public VueSwing1(Modele modele, Controleur controleur) {
		super(modele, controleur);
	}
 
	protected void initComposant() {
		super.initComposant();
		...
		System.out.println(tableau[0]);
		...
	}
}
Mais quand je lance la construction de VueSwing1 avec le code this.vue = new VueSwing1(modele, controleur); (les objets modele et controleur n'ont pas d'importance)
j'ai un nullpointerexception sur l'objet tableau.
Quand j'exécute le débogueur, le code est bien exécuté comme il faut, sauf la ligne d'initialisation tableau={"T1", "T2"}; qui est exécutée après les méthodes initComposant().
Je ne comprends pas pourquoi. est-ce que c'est un comportement normal de Java?
Merci.