Java 在for循环内的列表中重新分配变量
我想在遍历对象数组列表的for循环中重新分配一个变量。但无论我尝试什么,似乎都没有任何效果。基本上,我的代码如下所示:Java 在for循环内的列表中重新分配变量,java,Java,我想在遍历对象数组列表的for循环中重新分配一个变量。但无论我尝试什么,似乎都没有任何效果。基本上,我的代码如下所示: for (int i = 0; i < enemies.size(); i++) { AbstractEnemy enemy = enemies.get(i); if (enemy.intersects(bullet)) { enemy.getsHit(bullet.getDamage()); bulletList.rem
for (int i = 0; i < enemies.size(); i++) {
AbstractEnemy enemy = enemies.get(i);
if (enemy.intersects(bullet)) {
enemy.getsHit(bullet.getDamage());
bulletList.remove(bullet);
if (enemy.isDead()) {
// This does not work
enemy = new ExplodingEnemy(enemy.x, enemy.y);
}
}
}
for(int i=0;i
我做错了什么?创建一个新的敌人没有任何效果,因为您正在将敌人对象分配给一个临时变量,其生存期仅限于一个循环迭代。如果要在敌人列表中存储敌人对象,则需要添加对
set
方法的调用,如下所示:
enemy = new ExplodingEnemy(enemy.x, enemy.y);
enemies.set(i, enemy);
这将用您刚刚创建的对象替换表示敌人的旧对象
enemy = new ExplodingEnemy(enemy.x, enemy.y);
只是更改
引用
,而不是引用引用的对象
。为此,您需要一个暴露方法形式的对象内部句柄,它可以从内部修改对象。此代码:敌方=新的爆炸敌方(敌方.x,敌方.y)代码>只创建一个新的敌人对象。旧敌人对象保持原样。使用设置方法设置值