首页 >Java >java教程 >为什么 Java 的 `clone()` 方法受到保护而不是 `Cloneable` 接口的一部分?

为什么 Java 的 `clone()` 方法受到保护而不是 `Cloneable` 接口的一部分?

DDD
DDD原创
2024-11-25 11:02:11437浏览

Why is Java’s `clone()` Method Protected and Not Part of the `Cloneable` Interface?

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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn