java的cloneable,java – 为什么#clone()不在Cloneable界面?

我正在阅读正确执行数组的深层拷贝,但是我对#clone()的实现感到困惑.它是

java.lang.Object类的成员,但如果您读取了javadocs:

First,if the class of this object does not implement the interface Cloneable,then a CloneNotSupportedException is thrown.

那么为什么要在那里定义克隆方法呢?当然如果一个方法只能在接口存在的时候使用,那么你可以将该方法放在接口中.可克隆的界面本身是空的它只是Java使用的标记界面,以确保使用克隆方法是合法的.

这样做也可以消除使用仿制药来确保类型安全的能力:

class Foo implements Cloneable { // Valid.

@Override

public Object clone() throws CloneNotSupportedException {

// ...

}

}

class TypeSafeFoo implements Cloneable { // Not valid.

@Override

public TypeSafeFoo clone() throws CloneNotSupportedException {

// ...

}

}

为什么Java这样做呢?我确定他们有合理的理由,但我似乎无法弄清楚.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值