Java 是否“按引用传递”?不适用于集合中存在的元素
我有一个列表,如下所示:
List<MyObject> list = complexObject.getMyObjectList();
for(final MyObject obj in list){
// set something in obj. .............(1)
}
我调试了上面的代码,并发现修改后的 MyObject 没有反映在复杂对象中,除非我执行如下操作。
complexObject.setList(list);
我认为 Java 是通过“通过引用传递”来完成所有操作的。我错过了什么吗? ?
I have a List which i get like following :
List<MyObject> list = complexObject.getMyObjectList();
for(final MyObject obj in list){
// set something in obj. .............(1)
}
I debugged the above code and looked found out the the modified MyObject's are not reflected in the complexObject unless I do something like following..
complexObject.setList(list);
I thought Java does everything by "Pass by reference". Am i missing something. ?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
getMyObjectList() 函数的实现可能会在返回列表之前对其进行深层复制:
这是避免意外更改列表和/或列表成员的常见习惯用法。
The implementation of the
getMyObjectList()
function might do a deep copy of the list before returning it:This is a common idiom to avoid accidentally mutating the list and/or members of the list.
在 java 中,像 myObject 这样的变量保存对对象的引用。
因此,
如果将 myObject 变量传递给函数,则 myObject 的值将按值传递。但 myObject 变量的副本显示与 myObject 相同的对象。 _obj 和 myObject 具有相同的值“对象引用”。
In java your variables like myObject holds a reference to object.
and
So if you pass myObject variable to a function, myObject's value passed by value. But the copy of myObject variable shows the same object with myObject. _obj and myObject has the same value "reference of object".