0

だから私はリストを持っています

public List<Entity> entities;//initialized in constructor by entities  = new ArrayList<Entity>();

私が何かをするときはいつでも

entities.get(1).destroy();

これは、リスト内の同じクラスのすべてのエンティティにメソッドを適用します(クラスslime destroy()がすべてのスライムに影響しますが、他には何も影響しません)。これを修正する方法はありますか?

編集:私はちょうどいくつかのテストを行いました。どうやらそれは、配列内で最初に影響を受けたエンティティの後のエンティティにのみ影響します。

edit2:さて、さらにテストが行​​われました。このため、上記の部分全体を無視した方がよいでしょう。配列リストでは、remove(int i)を呼び出すたびに、配置された場所にあるオブジェクトとその後のすべてのオブジェクトが削除されます。

4

1 に答える 1

2

リスト内のすべての参照が単一のオブジェクトを指しているかどうかを確認してください。

Aタイプの変数を別の変数に割り当てると、参照のみがコピーされます。オブジェクトはまだユニークです。したがって、destroyある要素が必要な場合はnew、JB Nizet が指摘したように、それが で作成されていることを確認する必要があります。

于 2012-07-18T20:50:45.140 に答える