荔园在线
荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀
[回到开始]
[上一篇][下一篇]
发信人: heiheihei (瓦尔特), 信区: Java
标 题: java手记(10)--消除克隆能力
发信站: 荔园晨风BBS站 (Sat Nov 24 19:03:58 2001), 转信
java手记(10)--消除克隆能力
瓦尔特
应该提到的是,克隆的特性是可以继承的。当然了,前提是继承以后生成的类不能添加新
的对象成员。如我们可以引用手记(9)中的Deep类进行继承:
class MyDeep extends Deep{
int i;
//Integer x=new Integer(10);//如果添加上此句,则又不能进行深度克隆了。
}
鉴于以上特点,我们又面临另外一个问题:如何消除类的克隆能力,因为我并不一定希
望所有的类都可以被克隆。首先能够想到的就是使用CloneNotSupportedException。
class NoMore implements Cloneable{
public Object clone()
throws CloneNotSupportedException{
throw new CloneNotSupportedException;
}
}
这样NoMore类在调用clone()方法时就会自动throw一个CloneNotSupportedException。
但这并没有结束,因为该类其实并没有丧失克隆的能力。使用下面的方法就可以对NoMo
re类进行克隆。
Class GoOn extends NoMore{
Private GoOn make(GoOn g){
Return new GoOn();
}
public Object clone(){
return make(this);
}
}
因此我们还要使得NoMore类丧失被继承的能力,也就是使用final关键字。
final class NoMore implements Cloneable{
public Object clone()
throws CloneNotSupportedException{
throw new CloneNotSupportedException;
}
}
瓦尔特学自thinking in java
--
世界上没有任何话能说服你,除非它是你心中的那一句。
世界上没有任何人能打动我,除非她是我心中的那一个。
※ 来源:·荔园晨风BBS站 bbs.szu.edu.cn·[FROM: 202.118.1.82]
[回到开始]
[上一篇][下一篇]
荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店