2016-12-04 7 views
-2

私は1つのアイテムがあり、そのアイテムをArrayListに追加し、両方のインベントリを個別に変更できます。しかし、私がそれをテストするとき、どちらも正しいわけではありません。誰でも私がなぜそれが理解できるのを助けることができますか?あなたは、実際にはメモリ内の同じ項目オブジェクトへの参照、両方の外側のアイテムとあなたがインデックスによって取得された1つは、メモリ内の同じ物理オブジェクトに参照されているこれら2つのオブジェクトはなぜリンクされていますか? (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

。したがって、あなたの変更は積み重ねられ、独立して発生することはありません。明示的に2つの異なるアイテムオブジェクトを作成するか、空のアイテムオブジェクトに「ディープコピー」する必要があります。

関連する問題