繁体   English   中英

Java浅拷贝超类实例作为子类实例

[英]Java shallow copy super class instance for sub class instance

我想将超类的实例传递给子类的构造函数。 我的第一个想法是在子类中交换超类的实例,类似于javascript的原型,但是在这里我被告知Java不支持交换超实例的引用,因为本身不存在超实例。

为了避免这个问题,我想使用一个复制构造器,它接受一个超类实例。 然后,我将不得不手动重新链接所有引用,从长远来看,当其他人扩展超类的代码并忘记子类中的副本constructur时,这将导致错误。

问题:是否有某种巧妙而又不错的方法可以自动复制所有引用,也许还提供了一些反射机制来防止将来的错误?

您不应该将所有引用从超类实例复制到子类实例。 顺便说一句,所有这些引用甚至都不能从子类访问,如果它们在超类中被声明为私有字段(通常应该如此)。

您可能需要的是委派,而不是继承:

// Foo is the superclass
private class FooAdapter {
    private Foo foo;

    public FooAdapter(Foo foo) {
        this.foo = foo;
    }

    public void doThis() {
        return foo.doThis();
    }
}

FooAdapter可以扩展Foo或(最好)它们应该实现一个公共接口,但这不是必需的。

如果这不能解决您的问题,请告诉我们您想做什么,而不要告诉我们您想怎么做。 您要解决什么问题?

暂无
暂无

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

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