繁体   English   中英

什么是克隆对象的instanceof?

[英]What is instanceof of a cloned object?

如果A类创建公共Object的clone()方法:

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

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

编辑
澄清:我问这个是因为即使在编译之前,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 

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

这里阅读文档

这打印String按惯例是错误的:

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

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

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

与启动器相同,原始父类通常通过调用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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM