为什么这段代码没有正确检查接口?

时间:2012-06-14 21:20:52

标签: java interface vector instanceof

我认为这段代码会向适当的向量添加一个对象,但是我得到一个空指针异常。我知道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
}

1 个答案:

答案 0 :(得分:1)

  

我收到空指针异常。我知道Actor a存在,因为actors.add(a)正在按预期工作。

Vector.add(null)不会提出NullPointerExceptionjavadoc

  

public boolean contains(Object o)

     

如果此向量包含指定的元素,则返回true。更正式地说,当且仅当此向量包含至少一个元素e时才返回true (o==null ? e==null : o.equals(e))