今日、私は本当に私を混乱させた Java の問題に対処しました。次のコードがあります。
List<ObjectXY> someList = obj.getListOfObjectsXY(); // getter returns 2 elements
someList.add(new ObjectXY());
obj.getListOfObjectsXY(); // getter now returns 3 elements
リストに要素を追加すると、ゲッターが何らかの形で上書きされます。someList
これは、この場合、ゲッターの結果に対する参照のように機能するためですか? または、他に何がこの効果を引き起こしますか?
別のリストを使用して、次のコードで問題を解決しました。
List<ObjectXY> someList = obj.getListOfObjectsXY(); // result: 2 elements
List<ObjectXY> someOtherList = new ArrayList<ObjectXY>();
someOtherList.addAll(someList);
someOtherList.add(new ObjectXY());
obj.getListOfObjectsXY(); // result: 2 elements
しかし、Javaがこのように動作するとは思っていなかったので、まだ混乱しています。誰が私が間違っていたのか、なぜそうなのか説明できますか?
前もって感謝します!