mapstruct如何将对象列表转换为接口列表?

时间:2018-07-20 12:07:20

标签: java list mapstruct

我有下面的接口和类

public interface Fruit { ... }

public class AppleDto implements Fruit {...}

public class AppleEntity { ... }

我创建了一个映射器,该映射器将List的{​​{1}}转换为AppleEntity的{​​{1}},但是我需要将返回类型设置为{{1 }}。

List

不允许我转换为接口列表并给出错误。有满足我需要的适当方法吗?

1 个答案:

答案 0 :(得分:0)

您需要在AppleEntityFruit之间定义一个映射方法,并通过@BeanMapping#resultType定义结果类型

在您的情况下,它将如下所示:

@Mapper
public interface FruitsMapper {
    FruitsMapper INSTANCE = Mappers.getMapper(FruitsMapper.class);

    @BeanMapping(resultType = AppleDto.class)
    Fruit map(AppleEntity entity);

    List<Fruit> entityToFruits(List<AppleEntity> entity);
}

使用@IterableMapping#elementTargetType不是您所期望的。当存在多种映射方法时,这只是选择标准。来自它的javadoc:

Specifies the type of the element to be used in the result of the mapping method in case multiple mapping
methods qualify.