我正在尝试以这种方式创建一个新数组:
final boolean[] arr = new boolean[list.size()];
在某些情况下,这一行会在我的代码中抛出一个空指针。在什么情况下会发生这种情况?当列表的元素为零时会发生吗?我确信这个列表在这个阶段不为空。
我正在尝试以这种方式创建一个新数组:
final boolean[] arr = new boolean[list.size()];
在某些情况下,这一行会在我的代码中抛出一个空指针。在什么情况下会发生这种情况?当列表的元素为零时会发生吗?我确信这个列表在这个阶段不为空。
抛出NullPointerException意味着您有一个未初始化的对象。它与其他任何事情无关。如果异常被抛出您提到的行之外,那么正如您对问题的评论所说,您的列表尚未初始化。
要使用动态长度创建数组(请注意,数组大小在初始化后不能更改),您可以执行以下操作:
ArrayList<String> list = new ArrayList<String>();
//Add elements to your list
String[] arr = list.toArray(new String[list.size()]);
boolean[] arr = new boolean[0];
即使它是一个有效的语法。您可以创建大小为 0 的数组。所以直到和除非list
为空它不会产生NullPointerException
list
如果空点仅出现在该行上,则空点可以在为空时出现。如果这是你得到的例外,那么list
就是null
. 再看看你的代码,我相信你会发现的。或者,调试您的代码并检查list
此行的值。
list从未实例化。所以,它是null。检查您是否在声明后实例化了列表。
这只能发生,如果list
是null
。如果list
为空,list.size()
将返回 0。
请使用 List 而不是数组,最后从列表中获取数组..
确保您已初始化列表变量。它会抛出 NPE 的唯一方法是由于列表本身为空。