Bonjour.
Voici le code que j'ai tapé (en simplifiant. Les objets modele et controleur n'ont pas d'importance):
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)
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]); ... } }
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.
Partager