Je pensais que ce code ajouterait un objet aux vecteurs appropriés, mais j'obtiens une exception de pointeur nul. Je sais que Actor a
existe, car actors.add(a)
fonctionne comme prévu. J'ai recherché comment tester si un objet implémente une interface, mais tous les exemples que j'ai pu trouver détaillés comment appeler une méthode de l'interface, au lieu d'appeler une méthode qui nécessite une instance de cette interface.Pourquoi ce code ne vérifie-t-il pas l'interface correctement?
public void addActor(Actor a) {
actors.add(a); // actors is a vector
if (a instanceof Drawable) {
panel.addDrawable((Drawable) a);
}
}
Et dans le panneau:
public void addDrawable(Drawable d) {
images.add(d); // images is a vector
}
Vous pouvez ajouter une valeur nulle aux vecteurs. –
Je ne peux pas dire quelle est la question - que voulez-vous dire par "appeler une méthode d'une interface au lieu d'appeler une méthode qui nécessite une instance de cette interface"? –
La seule place possible pour le NPE que vous obtenez est (si vous dites que vous êtes positif, l'acteur a n'est pas nul, alors la ligne 'panel.addDrawable ((Drawable) a);' doit l'être. ' panel' doit être nul, sauf s'il y a un autre code que vous ne nous montrez pas.L'exception elle-même serait bien – Austin