【发布时间】:2012-10-16 14:08:34
【问题描述】:
我在主类中声明了两个 ArrayList。一个是例程对象的 ArrayList,另一个是例程名称的字符串数组。每次构造例程时,该例程名称以及存储在例程中的都存储在 Names 数组列表中。
static ArrayList <Routine> routineArrayList = new ArrayList <Routine> ();
static ArrayList <String> Names = new ArrayList <String> ();
我创建了一个 JList 并使用 String Names 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?
干杯
【问题讨论】:
-
可能是 currentRoutine (or) Names null 吗?
-
Names和routineArrayList是故意static吗?它真的应该是类变量而不是实例变量吗? -
如果每个
Routine都有自己的名字列表,那为什么Namesstatic呢?顺便说一句,它应该被命名为names。大写名称通常保留给 Java 中的类型。 -
names 和routineArrayList 是静态的,因为它们都在主类中由静态函数访问。每个例程变量都有一个名称 ArrayList,它是非静态的。
标签: java exception arraylist nullpointerexception