【发布时间】:2015-09-12 03:26:49
【问题描述】:
我了解到,对于数组,clone 方法表现良好,我们可以使用它。但我认为数组持有的元素类型应该已经实现了Cloneable接口。让我举个例子:
public class test {
public static void main(String[] args){
Test[] arr_t = new Test[1];
arr_t[0] = new Test(10);
Test[] an_arr = arr_t.clone();
an_arr[0]= new Test(5);
System.out.println(an_arr[0].test); //5
System.out.println(arr_t[0].test); //10
}
public static class Test{
public int test;
public Test(int test) {
this.test = test;
}
}
}
我认为 5 应该打印两次。这样做的原因是通过克隆数组,我们创建了新数组,其中包含对第一个数组持有的对象的引用(因为元素的类型没有实现Cloneable)。你不能把事情弄清楚吗?
不清楚数组元素的类型是否需要实现Cloneable。
【问题讨论】:
-
@zubergu 为什么?为什么要克隆数组?
-
@zubergu 好吧,我会说与
Cloneable和clone相关的一切都不合逻辑和预期......这是我的诚实意见,不再......
标签: java arrays clone cloneable