Geo*_*son 2 java foreach loops for-loop
我有这个代码不起作用:
Panel[] panelArr = new Panel[5];
for (Panel p:panelArr) {
p = new Panel();
}
Label lblName = new Label("Name:");
panelArr[0].add(lblName);
Run Code Online (Sandbox Code Playgroud)
它出现了错误:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at GUIVehicles$NewSportsCarDialog.<init>(GUIVehicles.java:65)
Run Code Online (Sandbox Code Playgroud)
但是,如果我用for循环替换for-each循环,它就可以工作.
for (int i = 0; i < 5; i++) {
panelArr[i] = new Panel();
}
Run Code Online (Sandbox Code Playgroud)
据我所知,通过每个循环的文档来看,两个for循环应该是等价的.显然情况并非如此,我想知道为什么?
你的每个人都是这样的:
for (int i = 0; i < 5; i++) {
Panel p = panelArr[i];
p = new Panel();
}
Run Code Online (Sandbox Code Playgroud)
因此,赋值对p数组本身没有任何影响 - 你只是重定向p到其他地方,这与数组没有关系.因此,在for-each循环结束时,所有数组元素仍然是null.你的第二个片段是填充数组的适当方法.