Я думал, что этот код добавит объект к соответствующим векторам, но я получаю исключение из null-указателя. Я знаю, Actor a
существует, потому что actors.add(a)
работает как ожидалось. Я исследовал, как проверить, реализует ли объект интерфейс, но все примеры, которые я смог найти подробно, как вызвать метод интерфейса, вместо вызова метода, для которого требуется экземпляр этого интерфейса.Почему этот код не проверяет правильность интерфейса?
public void addActor(Actor a) {
actors.add(a); // actors is a vector
if (a instanceof Drawable) {
panel.addDrawable((Drawable) a);
}
}
И в панели:
public void addDrawable(Drawable d) {
images.add(d); // images is a vector
}
Вы можете добавить нуль в векторы просто отлично. –
Я не могу сказать, в чем вопрос: что вы подразумеваете под «вызовом метода интерфейса вместо вызова метода, который требует экземпляр этого интерфейса»? –
Единственное возможное место для NPE, которое вы получаете (если вы говорите, что вы уверены, что Актор a не является нулевым, тогда '' панель.addDrawable ((Drawable) a); 'строка должна быть такой.' panel_ должен быть нулевым, если только нет другого кода, который вы нам не показываете. Показывая нам, что само исключение было бы неплохо. – Austin