gpt4 book ai didi

java - Java "Pass by reference"是否不适用于集合中存在的元素

转载 作者:行者123 更新时间:2023-12-02 08:01:41 29 4
gpt4 key购买 nike

我有一个列表,如下所示:

List<MyObject> list  = complexObject.getMyObjectList();
for(final MyObject obj in list){
// set something in obj. .............(1)
}

我调试了上面的代码,发现修改后的 MyObject 没有反射(reflect)在复杂对象中,除非我执行以下操作..

complexObject.setList(list);

我认为Java通过“引用传递”来完成所有事情。我错过了什么吗? ?

最佳答案

getMyObjectList() 函数的实现可能会在返回列表之前对其进行深层复制:

protected List<MyObject> objects = new ArrayList<MyObject>();
// ...
public List<MyObject> getMyObjectList() {
List<MyObject> os = new ArrayList<MyObject>();
for (Object o: this.objects) {
os.add(o.clone());
}
return os;
}

这是避免意外改变列表和/或列表成员的常见习惯用法。

关于java - Java "Pass by reference"是否不适用于集合中存在的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8808112/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com