私はその問題に素早く飛び込みます。私は簡単なクラスを持っています
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;
この議論が指摘しているように、コンパイル後は両方とも同じである必要があります。
私の質問は、なぜ各ループがアイテム配列からオブジェクトを初期化/構築できないのですか?