clone():ArrayList.clone()我认为是浅拷贝

ArrayList<Integer> a=new ArrayList<Integer>();

a.add(5);

ArrayList<Integer> b=(ArrayList<Integer>)a.clone();

a.add(6);

System.out.println(b.toString());

在上面的代码中,我认为clone()是浅表副本。所以,ba应指向同一个内存位置。但是,当我这样做时b.toString(),答案仅仅是56如果clone()是浅拷贝,为什么也没有显示?

回答:

浅拷贝并不意味着它们指向相同的存储位置。那只是一个任务:List b = a;

克隆将创建一个 包含相同 元素的

实例。这意味着您有2个不同的列表,但是它们的内容是相同的。如果在第一个列表中更改对象的状态,则该对象将在第二个列表中更改。(由于您使用的是不可变类型--您无法观察到这一点)

__Integer

但是,您应该考虑不使用clone()。它适用于集合,但通常被认为是损坏的。使用复制构造函数-new ArrayList(originalList)

以上是 clone():ArrayList.clone()我认为是浅拷贝 的全部内容, 来源链接: utcz.com/qa/413967.html

回到顶部