2013-07-27 16 views
5

オブジェクトのArrayList上を移動するforループ内の変数を再割り当てしたいとします。しかし、私が何を試みても何も効果がないようです。基本的に私のコードは次のようになります: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

設定メソッドを使用して値を設定する – Veera

答えて

11

新しい敵を作成しても、生存期間が1回のループ反復に限定された一時変数に敵オブジェクトを割り当てるため、効果はありません。あなたは敵のリストに敵オブジェクトを保存したい場合は、このように、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);は新しい敵オブジェクトを作成するだけです。古い敵オブジェクトはそのままです。

関連する問題