明智地重写clone方法

Cloneable接口的设计缺陷

Cloneable接口本应作为mixin接口(条目20)让类表明自身支持克隆能力,但实际设计却未能实现这一目标。该接口存在几个根本性设计缺陷:

核心机制缺陷

Cloneable最显著的问题是接口中未声明clone方法,而Object类的clone方法又是protected的。这导致开发者无法直接调用实现Cloneable接口对象的clone方法,除非借助反射(条目65)。但即便使用反射,也不能保证对象一定具有可访问的clone方法,因为这种约束仅通过约定而非语言机制保证。

// 典型问题示例:编译错误
Cloneable obj = new MyCloneable()

你可能感兴趣的:(高级Java,Java,高级java,提升)