我能否以某种方式将所有字段值从一个对象移动到另一个而不使用反射?所以,我想做的是这样的:
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 .
关于java - 将所有字段从一个对象移动到另一个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30830526/