2012-07-18 69 views
0

所以我有列表刪除銷燬所有情況後

public List<Entity> entities;//initialized in constructor by entities = new ArrayList<Entity>(); 

每當我做這樣的事情

entities.get(1).destroy(); 

它適用的方法,將同一類的每一個實體(如,如果我有類粘液摧毀()會影響列表中的所有粘液,但沒有其他)。有沒有什麼辦法解決這一問題?

編輯:我只是做了一些測試。顯然它隻影響數組中第一個影響後的實體。

edit2:好吧,更多的測試完成,因此你可能會忽略整個上述部分。在arraylist中,每當我調用remove(int i)時,它都會刪除放入的位置處的對象以及其後的所有對象。

+0

我們需要看到'destroy()'方法有幫助。列表中的實體實際上是不同的'Entity'實例嗎? – 2012-07-18 20:47:10

+1

你確定所有的「slime」變量都沒有引用同一個對象嗎?你如何創建它們? – Hassan 2012-07-18 20:47:51

+2

您可能幾次將相同的實體添加到列表中。確保新的Entity()在填充列表的循環中,而不是在外面。 – 2012-07-18 20:48:30

回答

2

檢查列表中的所有引用是否指向單個對象。

當您將A類型的變量分配給另一個變量時,只複製引用。該對象仍然是獨一無二的。所以,如果你想要destroy某些元素,你應該檢查它是否已經用new創建,正如JB Nizet指出的那樣。

+0

所有的元素都是用新的 – 2012-07-19 05:02:44

+0

@meme創建的。看看他們被添加到列表中的方式。你確定每個不同的元素都被添加嗎?我認爲增加的是多個引用的單個對象 – 2012-07-19 05:04:28

+0

不,他們不是我檢查的同一個對象 – 2012-07-19 05:05:44

相關問題