我正在阅读这个答案,他提到了一个链接,作者解释了为什么我们不应该使用 Cloneable。但是,仍然怀疑那里所说的内容
如果我有一个 Cloneable 数组,您会认为我可以运行该数组并克隆每个元素以制作该数组的深层副本,但我不能。您不能将某些内容强制转换为 Cloneable 并调用 clone 方法,因为 Cloneable 没有公共克隆方法, Object 也没有。如果您尝试强制转换为 Cloneable 并调用 clone 方法,编译器会说您正在尝试在对象上调用受保护的克隆方法。
但是,在这里我做到了
Init s = Init.getInstance(); // getting instance
int count=0;
Cloneable[] v = new Cloneable[5]; // creating array
Init x = s;
Init y = new Init(s);
try {
while (count < 5) {
v[count++] = (Cloneable) s.clone(); // casting it.
}
s.setClassName("Example");
System.out.println(((Init) v[2]).getClassName()); // Displaying.
} catch (CloneNotSupportedException ex) {
ex.printStackTrace();
}
我能够创建 Cloneable 数组并且我做了作者所说的会导致错误或者我误解了作者的陈述?任何人,请帮助我理解选择复制构造器而不是克隆的原因。