我会快速解决这个问题。我有一个简单的课程
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;
正如这个讨论所指出的,编译后两者应该是相同的。
我的问题是,为什么对于每个循环都无法从项目数组初始化/构造对象?