だから私はこのゲームチュートリアルを読んでいて、エイリアン/ミサイルを含むarrayListsを衝突時に消えさせるコードがあります。
ArrayList ms = craft.getMissiles();
for (int i = 0; i < ms.size(); i++) {
Missile m = (Missile) ms.get(i);
Rectangle r1 = m.getBounds();
for (int j = 0; j<aliens.size(); j++) {
Alien a = (Alien) aliens.get(j);
Rectangle r2 = a.getBounds();
if (r1.intersects(r2)) {
m.setVisible(false);
a.setVisible(false);
}
}
}
最後のループでは、m.setVisible(false)とa.setVisible(false)により、特定のエイリアン/ミサイルが非表示になりますが、「a」と「m」はArrayListの一部ではなく、ArrayListオブジェクトが引き出されてキャストされます。 「a」および「m」ですが、コーダーが「a」または「m」オブジェクトを配列リストの特定の場所に挿入し直さない(または配列リストの対応するオブジェクトを更新しない)ことを考えると、コードは正常に機能しているようです。
'a'と'm'は、コピーではなく、配列リストのi番目のオブジェクトへのアドレスによって参照されていると思いますか?