我不完全理解在类的clone()方法中返回super.clone()的想法.首先,与它返回一个包含LESS数据而不是请求的超类的对象有关,因为超类"不是"子类,而是子类"是"超类.如果有一个长链子类,每个子类都调用super.clone(),为什么不会导致它最终在链的根处调用Object.clone(),这不是任何子类?
对不起,如果那令人困惑; 我有时会困惑自己
Lau*_*eyn 52
实施clone()中Object检查实际的类实现Cloneable,并创建实际的类的实例.
因此,如果您想使您的类可以克隆,您必须实现Cloneable并向后传播super.clone()您的类的结果.另一个负担是,即使您知道它不会发生(因为您的类实现),调用super.clone()可以抛出CloneNotSupportedException您必须捕获的内容Cloneable.
类的Cloneable接口和clone方法Object是面向对象设计出错的一个明显例子.
更仔细地阅读javadocObject.clone():它返回对象的副本。副本是与调用 clone 的对象相同类的另一个实例。即foo.clone().getClass() == foo.getClass()。