これを行う場合[準Javaコード]:
while (loop)
{
localObject = getDataForObject();
globalPublicStaticArrayList<Object>.add(localObject);
}
globalPublicStaticArrayList のすべての要素は同一であり、最後に追加された localObject のコピーと同じです。デバッガーでループを実行したところ、オブジェクトが追加されるとすぐに、globalPublicStaticArrayList のすべての要素にコピーされることがわかりました。
私が見つけた回避策は次のとおりです。
while (loop)
{
localObject = getDataForObject();
globalPublicStaticArrayList<Object>.add(new Object(localObject.member1, localObject.member2,...));
}
Javaの参照渡しと関係がありますか? 最初のケースで要素が同一なのはなぜですか? ありがとう。