今天我处理了一个让我很困惑的Java问题。我有以下代码:
List<ObjectXY> someList = obj.getListOfObjectsXY(); // getter returns 2 elements
someList.add(new ObjectXY());
obj.getListOfObjectsXY(); // getter now returns 3 elements
当我将元素添加到列表时,getter 会被某种覆盖。这是因为someList
在这种情况下,它就像对 getter 结果的引用?或者还有什么导致这种效果的?
我通过使用另一个列表解决了以下代码的问题:
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 会这样。谁能向我解释我做错了什么以及为什么会这样?
提前致谢!