我会快速解决这个问题。我有一个简单的课程
class Vector{
float x, y;
}
另一个类有一个这些对象的数组作为其成员
Vector[] buffer;
我这样初始化它:
buffer = new Vector[8];
for(Vector v: buffer)
v = new Vector();
但是当我尝试访问该数组中的该对象的成员时,我的堆栈跟踪直接收到 NullPointerException 。也就是说,数组的对象还没有被构造。另一方面,这个更传统的代码运行得非常完美:
buffer = new Vector[8];
for(int i = 0; i<8; i++)
buffer[i] = new Vector;
As this https://stackoverflow.com/questions/85190/how-does-the-java-for-each-loop-work讨论指出,编译后两者应该是相同的。
我的问题是,为什么每个循环无法从项目数组初始化/构造对象?
在 for-each 示例中,您将覆盖循环的局部变量,该变量不会保存回数组中。它类似于您的第二个循环:
for(int i = 0; i < buffer.length; i++){
Vector v = buffer[i];
v = new Vector();
}
查看理解Java中的每个循环 https://stackoverflow.com/questions/589433/understanding-for-each-loop-in-java对于基本相同的问题。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)