使用 MapStruct 将一个 POJO 转换为另一个 POJO 而无需定义该实现

问题描述 投票:0回答:1

假设我有任何给定数量的 POJO,它们都共享共同的、名称相同的属性。理想情况下,我想避免使用像这样定义的多个映射器的大型接口

DtoA fromBToA(DtoB dtoB)
DtoB fromAToB(DtoA dtoA)
DtoC fromAToC(DtoA dtoA)

对于我将要处理的许多 POJO 中的每一个。

是否可以定义一个接受任何对象并返回任何对象的接口?我试过了

Object genericMapper(Object object)

这显然是行不通的,因为它无法访问属性来生成代码。

我想因为 MapStruct 文档指出:

此实现使用纯 Java 方法调用在源对象和目标对象之间进行映射,即没有反射或类似的。

我要求的是不可能的,但我只是想我会关闭或者是否有任何可用的解决方法。

java mapstruct
1个回答
0
投票

不幸的是,不可能为此使用 MapStruct。

因此,例如,如果您定义这样的通用映射器:

@Mapper
public interface GenericMapper {

    GenericMapper INSTANCE = Mappers.getMapper(GenericMapper.class);
    
    <SOURCE, TARGET> TARGET toTarget(SOURCE source);
    
}

当你尝试构建项目时,你会得到一个错误:

GenericMapper.java:[11,33] 无法为通用类型变量源生成映射方法。

© www.soinside.com 2019 - 2024. All rights reserved.