因此,我正在阅读this游戏教程,并且有代码使阵列列表与外星人/导弹在碰撞时消失。是否复制或引用ArrayList对象?
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(假)和a.setVisible(假)作出具体外星人/导弹看不见但“a”和“M”不是他们的ArrayList ArrayList中的一部分对象被拉出并铸造成“a”和“m”,但由于编码器不会将“a”或“m”对象插入到其在数组列表中的特定位置(或更新其对应的对象在列表中)。
哪个让我想到,'a'和'm'是由地址引用到arraylist中的第i个对象而不是作为副本?
(相关答案已经提交,所以......)有一件事 - 你不应该真的在使用for()'循环的那个版本 - 查找'for-each'循环。你似乎没有使用列表的索引,除了得到一个特定的元素... –
谢谢,我同意。但是这只是我正在学习一个教程,我想我自己的实现我会记下这个! :) – user772401