假设我有任何给定数量的 POJO,它们都共享共同的、名称相同的属性。理想情况下,我想避免使用像这样定义的多个映射器的大型接口
DtoA fromBToA(DtoB dtoB)
DtoB fromAToB(DtoA dtoA)
DtoC fromAToC(DtoA dtoA)
对于我将要处理的许多 POJO 中的每一个。
是否可以定义一个接受任何对象并返回任何对象的接口?我试过了
Object genericMapper(Object object)
这显然是行不通的,因为它无法访问属性来生成代码。
我想因为 MapStruct 文档指出:
此实现使用纯 Java 方法调用在源对象和目标对象之间进行映射,即没有反射或类似的。
我要求的是不可能的,但我只是想我会关闭或者是否有任何可用的解决方法。
不幸的是,不可能为此使用 MapStruct。
因此,例如,如果您定义这样的通用映射器:
@Mapper
public interface GenericMapper {
GenericMapper INSTANCE = Mappers.getMapper(GenericMapper.class);
<SOURCE, TARGET> TARGET toTarget(SOURCE source);
}
当你尝试构建项目时,你会得到一个错误:
GenericMapper.java:[11,33] 无法为通用类型变量源生成映射方法。