"java中没有深层拷贝,"但字符串列表是否重要?

 何博弘朗 发布于 2023-02-13 09:46

让我说我做:

public List gimmeAList(List original) {
    return new ArrayList(original); // this is a shallow memcopy.
} 

我尝试修改新列表,但由于字符串(或任何不可变对象)是不可变的,执行类似的操作:gimmeAList(something).get(0).replace("a", "b");实际上似乎不会更改任何列表中的任何内容.

所以在这种情况下,我是否可以假设(对于列表中的不可变对象)new ArrayList(original),对于所有意图和目的,保证基本上是一个深层副本?

1 个回答
  • 是的,绝对 - 复制一组不可变对象实际上很深,除非你做了一些疯狂的事情,比如在引用上进行同步或比较它们以获得引用相等性(即依赖于对象标识的操作).

    2023-02-13 09:53 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有