2012-05-09 24 views
1

我有一个非常简单的问题(我猜!) 克隆方法如何在Cloneable接口中受到保护,而接口只能声明公共方法?克隆方法如何在Cloneable中受到保护?

+2

的'Cloneable'接口和'clone'一般,是那种_broken._的(有效的Java,项目11 ) –

+0

@LouisWasserman你说的是绝对正确的,但与问题无关:)请参阅下面的任何答案。但你说得对,一般应避免克隆。 –

+0

问题是,在Cloneable接口中被保护的克隆方法是why_Cloneable被破坏的_part。 –

回答

2

Cloneable是一个marker interface它没有任何方法。

克隆方法在Object类中,因为Java中的所有对象都隐式扩展Object,因此即使其受保护也是可用的。

如果一个类没有实现Cloneable及其克隆方法被调用它会抛出CloneNotSupportedException

2

Cloneable接口实际上并没有定义任何方法。它只是一个标记界面,类似于Serializable。

预计任何实际可克隆的对象都将实现此接口,并从Object中覆盖clone()方法(至少使其可公开访问)。

2

Cloneable接口没有定义任何方法。
protected Object clone()java.lang.Object中的方法,如果该类未执行Cloneable,则会引发异常。

2

Cloneable不声明任何方法:)

您所想的Object,这并声明clone()方法。