我的代码不起作用:
Panel[] panelArr = new Panel[5];
for (Panel p:panelArr) {
p = new Panel();
}
Label lblName = new Label("Name:");
panelArr[0].add(lblName);
出现错误:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at GUIVehicles$NewSportsCarDialog.<init>(GUIVehicles.java:65)
但是,如果我用这个 for 循环替换 for-each 循环,它就可以工作。
for (int i = 0; i < 5; i++) {
panelArr[i] = new Panel();
}
据我所知,查看 foreach 循环的文档后,两个 for 循环应该是等效的。显然情况并非如此,我想知道为什么?
最佳答案
您的 for-each 类似于:
for (int i = 0; i < 5; i++) {
Panel p = panelArr[i];
p = new Panel();
}
因此,对 p
的赋值显然对数组本身没有影响 - 您只是将 p
重定向到其他地方,这对阵列没有影响。因此,在 for-each 循环结束时,所有数组元素仍然为 null
。您的第二个片段是填充数组的适当方法。
关于java - 为什么每个循环都不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21065002/