在for循环中重新分配List中的变量

sub*_*nid 5 java

我想在for循环遍历对象的ArrayList中重新分配变量.但无论我尝试什么,似乎都没有任何效果.基本上我的代码看起来像这样:

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);

        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

das*_*ght 11

创建一个新的敌人没有任何效果,因为您将敌方对象分配给临时变量,其生命周期限于单循环迭代.如果你想将敌人对象存储在敌人列表中,你需要添加一个set方法调用,如下所示:

enemy = new ExplodingEnemy(enemy.x, enemy.y);
enemies.set(i, enemy);
Run Code Online (Sandbox Code Playgroud)

这将用你刚刚创建的对象替换代表敌人的旧对象.