【发布时间】:2011-04-01 02:10:44
【问题描述】:
这里更容易用代码解释
Object anObj;
anObj = new MyObj();
anObj = new Rectangle();
anObj.clone();//this doesnt exist because its on the root Object class
在这个例子中我可以用什么来代替 Object.clone() 方法?
----------- 额外信息 ---------- --------
我已经添加了额外的信息,但它似乎已经出现在所有答案的中间,所以它再次出现,以便阅读。
您好,所有这些都对克隆或复制主题非常有帮助,我现在需要考虑一下。但他们对最初的问题没有帮助。也许我提供的更多信息将帮助您了解我所追求的。
我正在覆盖我的每个对象的克隆,并添加完全克隆对象所需的所有其他克隆和复制方法,这包括添加自定义方法来复制缓冲图像。 即:-
public Object clone() {//i copied from 'thelost's answer
try {
CloningExample copy = (CloningExample)super.clone();
copy.names = (LinkedList)names.clone();
return copy;
} catch (CloneNotSupportedException e) {
return null;
}
}
但是我的类中有一个变量是 Object,但是因为它包含不同类型的各种其他对象,所以我的每个类型都有一个 clone 方法,但是没有检查它是否是我的每个类型然后调用 clone () 在我的类型上,这将很长,因为我有很多类型,我看不到如何轻松复制或克隆对象。有没有办法让我只写一个这样的静态方法?
static findTypeAndCopy(Object thisobj){
if(thisobj==null)
return null;
if(thisobj instanceOf MyObj1){
return ((MyObj1)thisobj).clone();
}else if(thisobj instanceOf MyObj2){
return ((MyObj2)thisobj).clone();
...
etc
}
???
【问题讨论】:
-
Cloneable坏了。考虑看大局,看看为什么需要这样做,如果你真的需要这样做。