Je me suis penché sur la question et je ne pense pas que _config soit null au moment de la construction de UneClasse puisque _config est instancié lors de la construction de la _mainWindow. Or, la construction de la classe UneClasse a lieu apres la construction de cette dernière.
Voici comment je me représente les choses:
Un pointeur est constitué de deux faces : une face logicielle qui correspond à une adresse mémoire, et une face langage/code qui correspond au nom de la variable au sein du code source.
Ainsi je fais this._config = this._mainWindow._config je ne fais que copier la face logicielle du pointeur depuis le symbole _mainWindow._config vers le symbole this._config(qui représente alors la nouvelle face langage/code du pointeur).
Ai-je raison de parle comme ça ?
Pourquoi dans ce cas la this._config ne semble pas etre équivalent à this._mainWindow._config ?
Autre moment d'étonnement dans mon apprentissage du java :
Mettons;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
|
class UneClasse implements CaretListener{
JTextField _textField;
MainWindow _mainWindow;
public UneClasse(MainWindow _mainWindow){
this._mainWindow = _mainWindow;
}
public void caretUpdate(CaretEvent _e){
//x
if(...){
...//y
}
System.out.println(_textField.getText());
}
... |
dont voici la ligne critique :
_textField = (JtextField)_e.getSource();
Si j'insère cette dernière avant le if (en x), tout baigne. Mais si je la place dans le if (en y, j'obtiens une NullPointerException, quand bien même ai-je déclaré _textField en amont, et qu'il s'agit donc d'une variable de classe. Me trompes-je ? Que se passe-t-il ?



Partager