Java:可克隆接口的基本原理

2022-09-01 08:40:26

为什么接口中没有指定方法?.clone()java.lang.Cloneable


答案 1

基本上,这是一个破碎的界面。Ken Arnold 和 Bill Venners 在 Java Design Issues 中讨论了这个问题。

阿诺德:

如果我在这一点上是神,很多人可能很高兴我不是,我会说弃用并有一个,因为有问题。除了拼写错误之外,不包含该方法。这意味着您无法测试某些内容是否是 的实例,将其转换为 ,然后调用 。你必须再次使用反射,这很糟糕。这只是一个问题,但我肯定会解决这个问题。CloneableCopyableCloneableCloneablecloneCloneableCloneableclone


答案 2

在 Java 错误数据库中看到这个错误:

http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4098033

从本质上讲,这是早期版本的Java中的一个设计缺陷,他们不打算在可克隆界面中修复它,因为这样做会破坏与某些现有代码的兼容性。