我在我的主类中声明了两个ArrayLists。一个是Routine对象的ArrayList,另一个是Routine名称的String数组。每次构造例程时,该例程名称以及存储在例程中的名称都存储在Names arrayList中。
static ArrayList <Routine> routineArrayList = new ArrayList <Routine> ();
static ArrayList <String> Names = new ArrayList <String> ();
我创建了一个JList并使用String Names arrayList来填充它..
list = new JList(Names.toArray());
一切都很好,我可以选择一个名字并选择相应的例程。
问题,每个例程,都有自己的名字ArrayList。
我希望能够使用所选的例程,并使用名称INSIDE the Routine填充JList。这就是我的尝试..
currentRoutine = routineArrayList.get(intChoice);
...
list = new JList(currentRoutine.Names.toArray()); ******** PROBLEM LINE
System.out.println(currentRoutine.Names.toArray())
提供完全相同的NullPointerException
。
一段时间以来,我一直感到很欣慰,如果需要更多信息,我将竭诚为您提供帮助。我会尽力提供。
修改
感谢您的回答,事实证明,主要问题是每个Routine对象中的names数组都没有正确初始化。但问题仍然存在。
'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?
干杯
答案 0 :(得分:3)
方法ArrayList<String>.toArray()
不应该抛出NullPointerException
,因此这里的问题几乎肯定是currentRoutine
或currentRoutine.Names
是null
。您需要检查填充routineArrayList
的代码,确保其所有元素都为非null且具有非空Names
字段。
答案 1 :(得分:0)
建议:按照字段的命名惯例,static
ArrayList <String> names
代替static ArrayList <String> Names
似乎currentRoutine
或currentRoutine.Names
为空,正如他在答案中提到的那样。
对可空性进行一点检查。
答案 2 :(得分:0)
感谢您的帮助,
我对它进行了分类,实际上是与布局不佳的Frames和JLists有关。我最终在selectionListener中为我的第一个JList以及一个新的JFrame声明了一个新的'names'(Routine.names)JList。
干杯,
马修