我在我的主类中声明了两个 ArrayList。一个是 Routine 对象的 ArrayList,另一个是 Routine 名称的 String 数组。每次构造例程时,例程名称以及存储在例程中的例程名称都会存储在名称数组列表中。
static ArrayList <Routine> routineArrayList = new ArrayList <Routine> ();
static ArrayList <String> Names = new ArrayList <String> ();
我创建了一个 JList 并使用字符串名称 arrayList 来填充它..
list = new JList(Names.toArray());
一切都很好,我可以选择一个名称并选择相应的例程。
问题是每个例程都有它自己的名称数组列表。
我希望能够使用选定的例程并使用该例程内的名称填充 JList。这就是我正在尝试的..
currentRoutine = routineArrayList.get(intChoice);
...
list = new JList(currentRoutine.Names.toArray()); ******** PROBLEM LINE
System.out.println(currentRoutine.Names.toArray())
给出完全相同的 NullPointerException
。
这已经让我烦恼了一段时间,如果需要更多信息,我将尽力提供任何帮助。
编辑
感谢您的回答,事实证明,主要问题是每个 Routine 对象内的名称数组未正确初始化。但问题依然存在。
'System.out.println("Choice: " + currentRoutine.names.get(0)); // Or get(x)
和
'System.out.println("Choice: " + currentRoutine.names.toString()
两者都给出了他们应该给出的内容。完整的名称数组或元素 注意: 'System.out.println("Choice: "+ currentRoutine.names.toArray() 给出地址详细信息等。
但是,当我尝试
'list = new JList(currentRoutine.names.toArray());'
我得到同样的 NullPointerException?
干杯
最佳答案
方法ArrayList<String>.toArray()
永远不应该抛出 NullPointerException
,所以这里的问题几乎可以肯定是 currentRoutine
或currentRoutine.Names
是 null
。您需要检查填充 routineArrayList
的代码,确保其所有元素均非空且具有非空 Names
字段。
关于java - ArrayList.toArray() 抛出 NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12916536/