关于 clone() 、对象 class 和 Java 中的可克隆接口的混淆

confusion regarding clone() , Object class and Clonable Interface in Java

如果clone()Objectclass的一部分,那么为什么我们需要实现Clonable接口才能使用clone()

我读到clone()Object的受保护成员,那么clone()Clonable接口之间的关系是什么。 对不起,如果我听起来很愚蠢。我刚开始学习Java.

Cloneable是一个标记界面。它没有任何方法。只是将您的 class 列入白名单,使 Cloneable

来自 docs

A class implements the Cloneable interface to indicate to the Object.clone() method that it is legal for that method to make a field-for-field copy of instances of that class. Invoking Object's clone method on an instance that does not implement the Cloneable interface results in the exception CloneNotSupportedException being thrown.

强烈不推荐使用clone()。我不会深入讨论这个题外话,但如果您需要更多这方面的数据,请查看 Effective Java. Read Item 11: "Override clone judiciously"

Object.clone() 有一个实现。如果对象实现了 Cloneable,它会生成对象的浅表副本。

.clone()方法不属于任何接口。

拥有.clone()方法和实现Cloneable接口是完全不同的事情。

如果要使用Object的clone方法,只需要实现Cloneable接口