1 回答
TA贡献1846条经验 获得超7个赞
您可以在接收另一个超类的超类中创建一个构造函数。
public abstract class SomeAbstract {
/* attributes... */
public SomeAbstract() {
}
protected SomeAbstract(SomeAbstract another) {
this.a = another.a;
/* and on... */
}
}
并在子类中重用这个构造函数:
public class B extends SomeAbstract {
public B(A a) {
super(a);
this.specificAttribute = a.somethingElse;
}
}
如果您有那么多字段并且不想/不需要手动创建整个代码,您可以使用一个外部库来帮助您进行类之间的映射。一些选项是:
在对象之间映射数据的推土机。配置可以通过 XML 或注解来完成。该库使用反射工作(AFAIK),因此它可能对您的应用程序的性能产生直接影响。
Orika在运行时生成字节码以在对象之间映射数据。配置是在设计时完成的。该库使用反射工作(AFAIK),因此它可能对您的应用程序的性能产生直接影响,当我对其进行测试时,执行时间比 Dozer 快(大约快 7 倍)。
MapStruct将生成映射类的代码(使用 getter 和 setter,验证空值等),并且此代码将在运行时可用。配置是在设计时通过注解完成的。该库使用 Java 代码工作(AFAIK),因此它类似于代码的正常执行(例如 execute
b.setValue(a.getValue()))
.
添加回答
举报