繁体   English   中英

Java克隆唯一超类

[英]Java clone only superclass

我有一个问题:是否有可能将超类从一个对象“提取”到新对象? 我会明白我的意思。

public class test {

public static void main(String[] args) {
    subclass sb = new subclass(false);
    System.out.println(sb.a);
    System.out.println(sb.b);
    superclass sc = sb;
    superclass sc2;
    try {

        sc2 = sc.clone();
    } catch (CloneNotSupportedException e) {
        e.printStackTrace();
        return;
    }
    System.out.println(((subclass)sc2).a);
}

private static class superclass implements Serializable, Cloneable {
    public boolean b;
    public superclass() {
        b = false;
    }
    public superclass(boolean a) {
        this.b = a;
    }
    public superclass clone() throws CloneNotSupportedException {
        return (superclass)super.clone();
    }
}

private static class subclass extends superclass implements Serializable{
    public boolean a;
    public subclass(boolean a) {
        super(true);
        this.a = a;
    }
}
}

通过此代码,我得到以下输出:

false
true
false

这意味着该对象已完全克隆,但我只想克隆超类。

是否已经执行了此操作,或者我必须在超类中实现自己的字段间复制方法?

不知道您通过示例实际达到/证明了什么。 即使仅克隆超类也是可能的,结果仍将与仅复制a字段相同。

无论如何,答案是否定的。 克隆是有目的的方法,因此您不需要关心后台的真实类。 如果您希望对特定的超类进行部分克隆,则可以在编译时获得所有信息,因此可以通过调用特定的构造函数/ setter轻松实现此目标。

暂无
暂无

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

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