ArrayList.toArray()抛出NullPointerException

时间:2012-10-16 14:08:35

标签: java exception arraylist nullpointerexception

我在我的主类中声明了两个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?

干杯

3 个答案:

答案 0 :(得分:3)

方法ArrayList<String>.toArray()不应该抛出NullPointerException,因此这里的问题几乎肯定是currentRoutinecurrentRoutine.Namesnull。您需要检查填充routineArrayList的代码,确保其所有元素都为非null且具有非空Names字段。

答案 1 :(得分:0)

建议:按照字段的命名惯例,static ArrayList <String> names代替static ArrayList <String> Names

似乎currentRoutinecurrentRoutine.Names为空,正如他在答案中提到的那样。

对可空性进行一点检查。

答案 2 :(得分:0)

感谢您的帮助,

我对它进行了分类,实际上是与布局不佳的Frames和JLists有关。我最终在selectionListener中为我的第一个JList以及一个新的JFrame声明了一个新的'names'(Routine.names)JList。

干杯,

马修