在数组上调用 clone() 是否也会克隆其内容?
如果我在 A 类型的对象数组上调用方法,它将如何克隆其元素?副本是否会引用相同的对象?还是需要他们每个人?clone()
(element of type A).clone()
如果我在 A 类型的对象数组上调用方法,它将如何克隆其元素?副本是否会引用相同的对象?还是需要他们每个人?clone()
(element of type A).clone()
clone()
创建浅层副本。这意味着不会克隆元素。(如果他们没有实现呢?Cloneable
您可能希望用于复制数组而不是(尽管克隆对于数组很好,与其他任何东西不同)Arrays.copyOf(..)
clone()
如果您想要深度克隆,请检查此答案
一个小例子来说明即使元素的浅层性是:clone()
Cloneable
ArrayList[] array = new ArrayList[] {new ArrayList(), new ArrayList()};
ArrayList[] clone = array.clone();
for (int i = 0; i < clone.length; i ++) {
System.out.println(System.identityHashCode(array[i]));
System.out.println(System.identityHashCode(clone[i]));
System.out.println(System.identityHashCode(array[i].clone()));
System.out.println("-----");
}
指纹:
4384790
4384790
9634993
-----
1641745
1641745
11077203
-----
如果我在类型为A的对象数组上调用 clone() 方法,它将如何克隆其元素?
不会克隆数组的元素。
副本是否会引用相同的对象?
是的。
或者它会为每个元素调用(A).clone()类型的元素??
不,它不会调用任何元素。clone()