2013-07-27 8 views
5

के भीतर एक सूची में परिवर्तनीय पुन: असाइन करें मैं ऑब्जेक्ट्स के एक ऐरेलिस्ट पर ट्रैवर्स के लिए एक चर के भीतर एक चर को पुन: असाइन करना चाहता हूं। लेकिन जो भी मैं कोशिश करता हूं ऐसा लगता है कि कुछ भी प्रभाव नहीं पड़ता है। असल में मेरा कोड इस तरह दिखता है:फॉर-लूप

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

एक नया दुश्मन बनाना कोई प्रभाव नहीं पड़ता है क्योंकि आप एक लूप पुनरावृत्ति तक सीमित जीवनकाल के साथ दुश्मन वस्तु को एक अस्थायी चर को असाइन कर रहे हैं। आप दुश्मनों की सूची में दुश्मन वस्तु संग्रहीत करना चाहते हैं, तो आप 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); बस एक नया दुश्मन वस्तु बनाता है। पुराना दुश्मन वस्तु उतनी ही बनी हुई है जितनी है।