0

我正在尝试以这种方式创建一个新数组:

final boolean[] arr = new boolean[list.size()];

在某些情况下,这一行会在我的代码中抛出一个空指针。在什么情况下会发生这种情况?当列表的元素为零时会发生吗?我确信这个列表在这个阶段不为空。

4

7 回答 7

1

抛出NullPointerException意味着您有一个未初始化的对象。它与其他任何事情无关。如果异常被抛出您提到的行之外,那么正如您对问题的评论所说,您的列表尚未初始化。

要使用动态长度创建数组(请注意,数组大小在初始化后不能更改),您可以执行以下操作:

ArrayList<String> list = new ArrayList<String>();
//Add elements to your list
String[] arr = list.toArray(new String[list.size()]);
于 2013-08-29T10:02:13.523 回答
0
boolean[] arr = new boolean[0];

即使它是一个有效的语法。您可以创建大小为 0 的数组。所以直到和除非list为空它不会产生NullPointerException

于 2013-08-29T10:01:20.770 回答
0

list如果空点仅出现在该行上,则空点可以在为空时出现。如果这是你得到的例外,那么list就是null. 再看看你的代码,我相信你会发现的。或者,调试您的代码并检查list此行的值。

于 2013-08-29T10:01:28.097 回答
0

list从未实例化。所以,它是null。检查您是否在声明后实例化了列表。

于 2013-08-29T10:01:43.333 回答
0

这只能发生,如果listnull。如果list为空,list.size()将返回 0。

于 2013-08-29T10:01:50.883 回答
0

请使用 List 而不是数组,最后从列表中获取数组..

于 2013-08-29T10:02:40.757 回答
0

确保您已初始化列表变量。它会抛出 NPE 的唯一方法是由于列表本身为空。

于 2013-08-29T10:09:35.767 回答