gpt4 book ai didi

java - 我有一个抽象类和两个扩展,我可以有一个通用的映射器吗?

转载 作者:行者123 更新时间:2023-11-29 09:27:13 25 4
gpt4 key购买 nike

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

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 的所有 setter ?在每种情况下都必须映射大约 40 个值,这需要一些内部逻辑,但这对于 Object1Object2 都是一样的。

我认为泛型可能是解决此问题的方法,但我不完全确定。

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

最佳答案

您可以尝试在映射器中使用 instanceof 运算符。有点像

if (objectBase instanceof Object1) {
//do something
}
else if (objectBase instanceof Object2) {
//do something else
}

...

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

关于java - 我有一个抽象类和两个扩展,我可以有一个通用的映射器吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49879687/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com