Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在for循环内的列表中重新分配变量_Java - Fatal编程技术网

Java 在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循环中重新分配一个变量。但无论我尝试什么,似乎都没有任何效果。基本上,我的代码如下所示:

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)只创建一个新的敌人对象。旧敌人对象保持原样。

使用设置方法设置值