这段代码如何抛出空指针异常?
for (Foo f : Vector<Foo> v)
{
f.doStuff(); // this line throws a NullPointerException
}
即使Vector为空,也不应该只执行内部块?
答案 0 :(得分:10)
Vector
不为空。如你所说,如果是,那么循环体将不会被执行。
如果您在该行上获得NPE,则表示Vector
中的一个(或多个)元素为null
。
我还应该指出示例代码在语法上是不正确的。它可能应该是这样的:
Vector<Foo> v = ...
for (Foo f : v)
{
f.doStuff(); // this line throws a NullPointerException
}
答案 1 :(得分:0)
您显示的语法不正确,您不能在循环中声明步变量(Foo f)和集合(Vector v)。如果集合(在您的示例中为v)为null,您将获得NullPointerException。如上所述,如果集合包含一个null的元素,您还将获得NullPointerException。