2013-07-27 88 views
5

我想在for循環內重新分配一個變量來遍歷對象的ArrayList。但無論我嘗試什麼,似乎沒有任何影響。基本上我的代碼如下所示:在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); 

     } 
    } 
} 

我在做什麼錯?

+2

使用set方法設置值 – Veera

回答

11

創建一個新敵人並沒有任何效果,因爲您將敵方對象分配給一個臨時變量,並且其生命期限於單次循環迭代。如果你想敵人對象存儲在敵人的名單,你需要添加set方法的調用,就像這樣:

enemy = new ExplodingEnemy(enemy.x, enemy.y); 
enemies.set(i, enemy); 

這將替換所代表的與您剛剛創建的一個敵人舊的對象。

4
enemy = new ExplodingEnemy(enemy.x, enemy.y); 

只是更改reference而不是參考引用的object。爲此,您需要以暴露方法的形式向對象提供內部句柄,該方法可以從內部修改對象。

1

此代碼:enemy = new ExplodingEnemy(enemy.x, enemy.y);只是創建一個新的敵方對象。舊的敵方物體保持原樣。

相關問題