Java中受保护的Clone()方法:一个令人费解的决定
Java的clone()是一个特殊的方法,在java.lang中受保护。目的。为什么做出这个令人困惑的决定?
无法利用 Cloneable 接口
与可复制类实现可克隆接口的其他框架不同,Java 的clone() 没有在 Cloneable 中声明。因此,使用接口检查可克隆性是不可能的。像“if(a instanceof Cloneable)”这样的代码无法确定 'a' 是否支持克隆。
反射依赖
要绕过此限制,可以使用反射。然而,这种方法引入了不必要的复杂性,并且依赖于具体类实现的知识。它还依赖于严格的协议,通常没有文档记录且无法执行。
令人遗憾的设计
Effective Java 的作者 Josh Bloch 将 Cloneable 的设计标记为“一个错误”。它无法有效地宣传克隆支持,并强加了一个繁琐的协议。相反,他建议在类级别实现 Cloneable,确保遵守协议。
以上是为什么 Java 的 `clone()` 方法受到保护而不是 `Cloneable` 接口的一部分?的详细内容。更多信息请关注PHP中文网其他相关文章!