什么是克隆对象的instanceof?

时间:2014-02-21 09:28:53

标签: java clone

如果一个 A 类使公共对象的clone()方法成为:

@Override
public Object clone() {
    return super.clone();
}

使用instanceof创建的 A 实例的getClass()(或clone())是什么?
使用class B extends A方法创建clone()的实例怎么样?

修改
澄清:我问这个是因为即使在编译之前,Eclipse java编辑器需要将返回的clone()实例强制转换到指定的对象。这表明返回的类是Object(技术上是这样,但到目前为止所有的答案都说该类应该是A)

A original = new A();
A cloned1 = original.clone(); // Eclipse marks this as error
A cloned2 = (A) original.clone(); // This is OK 

3 个答案:

答案 0 :(得分:3)

它与原始对象的类型相同,只要它通过调用Object.clone()使用super.clone()并且 应该 来完成convention

阅读doc here

这会打印String,但convention

错误
public class SomeTest {
    @Override
    protected Object clone() {
        return "";
    }
    public static void main(String[] args) {
        System.out.println(new SomeTest().clone().getClass().getSimpleName());
    }
}

答案 1 :(得分:2)

应该是父类的实例。但这依赖于实施者编写传统的clone方法。

在这方面以及其他方面,Java中的克隆已经完全破解了。

答案 2 :(得分:2)

与启动器相同,原始父类通常通过调用super.clone()来使用Object.clone()。如需更多信息,请访问

http://howtodoinjava.com/2012/11/08/a-guide-to-object-cloning-in-java/

https://www.artima.com/objectsandjava/webuscript/ClonCollInner1.html