java - 将所有字段从一个对象移动到另一个对象

标签 java oop object field

我能否以某种方式将所有字段值从一个对象移动到另一个而不使用反射?所以,我想做的是这样的:

public class BetterThing extends Thing implements IBetterObject {
    public BetterThing(Thing t) {
        super();
        t.evolve(this);
    }
}

因此,evolve方法会将一个类进化为另一个类。一个参数是 <? extends <? extends T>>其中 T是对象的类,您正在调用 evolve上。

我知道我可以通过反射来做到这一点,但是反射会影响性能。在这种情况下 Thing类在外部 API 中,没有方法可以将所有必需的字段从它复制到另一个对象。

最佳答案

正如@OliverCharlesworth 指出的那样,它不能直接完成。您将不得不求助于反射(reflection)(尽管我不推荐这样做!)或一系列逐个领域的作业。

不过,另一种选择是从继承切换到组合:

public class BetterThing implements IBetterObject {
    Thing delegate;

    public BetterThing(Thing t) {
        this.delegate = t;
    }

    // Thing methods (delegate methods)
    String thingMethodOne() {
        return delegate.thingMethodOne();
    }

    // BetterThing methods
}

这通常称为 decorator pattern .

参见:Prefer composition over inheritance?

关于java - 将所有字段从一个对象移动到另一个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30830526/

相关文章:

java - 原生 Android 前台定位服务崩溃 Flutter 应用

oop - 是否有可能进一步将最佳实践嵌入到编程语言中?

oop - UML:当一个类具有指向另一类的方法参数指针时

python - djangoobjects.filterQ() 在一次查询中可以使用多少次?

javascript - Button.value 没有更改按钮的文本值

java - 自动监控网页变化

java - 特定模块的 JMX spring 配置

java - 在 Weblogic 上的 EJB 3 无状态 session bean 中使用 Jersey 客户端

python - 如何使用exec动态向类添加静态方法?

java - 如何将对象添加到对象 HashMap 中的已排序集合