2016-12-04 73 views
-2

我對以下代碼的理解是,我有一個項目,我將該項目添加到ArrayList中,並且可以單獨修改它們的兩個清單。但是當我測試它時,兩者都不正確。任何人都可以幫助我理解爲什麼這可能是?這兩個物體爲什麼相連? (ArrayList)

int i = item.getInventory(); 
item.setInventory(i-numToBuy); 
inv.getCart().add(item); 
inv.getCart().get(inv.getCart().indexOf(item)).setInventory(numToBuy); 
g.getShoppingCart().setText(inv.getCartString()); 
+1

實際上,您正在引用內存中的相同'item'對象,外部項目和索引所獲得的項目都引用內存中的同一物理對象。因此你的改變將會疊加,它們不會獨立發生。 –

回答

0

你實際上是引用在內存中的同項對象,無論外面的項目,會通過索引獲得一個被引用在內存中相同的物理對象。因此你的改變將會疊加,它們不會獨立發生。您可能需要顯式創建兩個不同的項目對象,或者將您正在使用的項目「深度複製」到空項目對象中。