在我的项目中,我有以下模型:
public class Object1 extends ObjectBase {
private Value1 specific1;
}
public class Object2 extends ObjectBase {
private Value2 specific2;
}
public abstract class ObjectBase {
private String value1;
private String value2;
private String value3;
}
public class Source {
private String value1;
private String value2;
private String value3;
}
我需要设法将Source
对象映射到Object1
或Object2
。是否可以设置常用函数来设置ObjectBase
值?以前,这是通过创建一个新实例来完成的,然后将其发送到以下内容:
public static void convertToObjectBase(Source source, ObjectBase objectBase) {
objectBase.setValue1(source.getValue1);
objectBase.setValue2(source.getValue2);
objectBase.setValue3(source.getValue3);
}
后一种方式,编辑到位,对我来说似乎不对。您是否知道更好的方法,而不必为每个案例复制ObjectBase
的所有设置者?在每种情况下都需要映射40个值,需要一些内部逻辑,但Object1
和Object2
都是相同的。
我认为仿制药可以成为这里的方式,但我并不完全确定。
编辑:我有一些误导性的值名称,更新了这些名称。
答案 0 :(得分:-1)
您可以尝试在mapper中使用instanceof运算符。像
这样的东西if (objectBase instanceof Object1) {
//do something
}
else if (objectBase instanceof Object2) {
//do something else
}
。 。
这样,您可以使用相同的映射器映射要为子类映射的任何属性。