我有一个抽象类和两个扩展,我可以有一个共同的映射器吗?

时间:2018-04-17 13:39:29

标签: java abstract-class

在我的项目中,我有以下模型:

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对象映射到Object1Object2。是否可以设置常用函数来设置ObjectBase值?以前,这是通过创建一个新实例来完成的,然后将其发送到以下内容:

public static void convertToObjectBase(Source source, ObjectBase objectBase) {
    objectBase.setValue1(source.getValue1);
    objectBase.setValue2(source.getValue2);
    objectBase.setValue3(source.getValue3);
}

后一种方式,编辑到位,对我来说似乎不对。您是否知道更好的方法,而不必为每个案例复制ObjectBase的所有设置者?在每种情况下都需要映射40个值,需要一些内部逻辑,但Object1Object2都是相同的。

我认为仿制药可以成为这里的方式,但我并不完全确定。

编辑:我有一些误导性的值名称,更新了这些名称。

1 个答案:

答案 0 :(得分:-1)

您可以尝试在mapper中使用instanceof运算符。像

这样的东西
if (objectBase instanceof Object1) {
        //do something 
}
else if (objectBase instanceof Object2) {
        //do something else
}

。 。

这样,您可以使用相同的映射器映射要为子类映射的任何属性。