在Vector上增强for循环中的空指针异常

时间:2011-08-04 13:17:58

标签: java nullpointerexception foreach

这段代码如何抛出空指针异常?

for (Foo f : Vector<Foo> v)
{
    f.doStuff(); // this line throws a NullPointerException
}

即使Vector为空,也不应该只执行内部块?

2 个答案:

答案 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。