以下代码正在进行中:
private final Controller controller = new Controller();
private final XSimpleList lists[] = new XSimpleList[2]; //extends JList (my framework)
我有一个公共类X,它扩展了JFrame并实现了Runnable。 这个公共类X有一个已定义的构造函数。 构造函数中的最后一行是:
(new Thread(new X())).start();
根据需要,我确实有public void run() {}
。
在这个run()方法中我有一个
lists[0].FillUp(controller.getSomeData(), 2);
线程被编程为在从udp服务器收到消息时执行上述行。
所以......问题是执行给定的行(运行时)。
它会生成java.lang.NullPointerException
。
XSimpleList代码段:
final JList hW;
final DefaultListModel dlm;
final JScrollPane lsp;
public final void FillUp(MyTypeRepository volume, int filter) {
dlm.clear();
//iterations
dlm.addElement(some_data);
//end iterations
}
我的问题是...... 我如何解决这个问题,以便列表[0] 在从启动的线程调用时不返回NullPointer?
当从X类执行(仅)时,问题不存在。我认为在2个“管道”之间共享数据是一个问题,这意味着父实例(类x)和子实例(线程y)。
谢谢!
答案 0 :(得分:1)
lists[0] has NULL because
private final XSimpleList lists[] = new XSimpleList[2] creates an array with NULL values Like:
lists[0] = NULL;
lists[1] = NULL;
You should write code as:
private final XSimpleList lists[] = new XSimpleList[2];
lists[0] = new XSimpleList();
lists[1] = new XSimpleList();