이 코드는 적절한 벡터에 개체를 추가 할 것이라고 생각했지만 null 포인터 예외가 발생했습니다. actors.add(a)
이 예상대로 작동하므로 Actor 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
}
잘 벡터에 null을 추가 할 수 있습니다. –
질문이 무엇인지 말할 수 없습니다 - "인터페이스의 인스턴스를 필요로하는 메서드를 호출하는 대신 인터페이스의 메서드를 호출"한다는 것은 무슨 뜻입니까? –
당신이 얻고있는 NPE를위한 유일한 장소는 당신이 긍정적 인 Actor A가 null이 아니라고 말하면,'panel.addDrawable ((Drawable) a);'행이 그것입니다. panel '은 우리에게 보여주지 않는 다른 코드가 없으면 널이어야합니다. 예외 사항 자체를 표시하는 것이 좋을 것입니다 .. – Austin