【问题标题】:Mapstruct: mapping of GenericsMapstruct:泛型的映射
【发布时间】:2015-11-12 20:02:06
【问题描述】:
@Mapper
public interface MyMapper<X extends Base_1, Y extends Base_2>{
    public X mapBase_2ToBase_1(Y obj);
}

我想将一个泛型类型Y 的对象映射到另一个泛型类型X 的对象。使用mapstruct可以实现类似的事情吗?还是我必须为通用映射编写自定义映射器?当我编译上面的代码时,我得到了编译错误。

Caused by: java.lang.NullPointerException
    at org.mapstruct.ap.util.SpecificCompilerWorkarounds.replaceTypeElementIfNecessary(SpecificCompilerWorkarounds.java:90)
    at org.mapstruct.ap.util.Executables.getAllEnclosedExecutableElements(Executables.java:189)
    at org.mapstruct.ap.model.common.Type.getAllExecutables(Type.java:395)
    at org.mapstruct.ap.model.common.Type.getSetters(Type.java:464)
    at org.mapstruct.ap.model.common.Type.getPropertyWriteAccessors(Type.java:353)
    at org.mapstruct.ap.model.BeanMappingMethod$Builder.souceMethod(BeanMappingMethod.java:93)
    at org.mapstruct.ap.processor.MapperCreationProcessor.getMappingMethods(MapperCreationProcessor.java:345)
    at org.mapstruct.ap.processor.MapperCreationProcessor.getMapper(MapperCreationProcessor.java:143)
    at org.mapstruct.ap.processor.MapperCreationProcessor.process(MapperCreationProcessor.java:114)
    at org.mapstruct.ap.processor.MapperCreationProcessor.process(MapperCreationProcessor.java:73)
    at org.mapstruct.ap.MappingProcessor.process(MappingProcessor.java:193)
    at org.mapstruct.ap.MappingProcessor.processMapperTypeElement(MappingProcessor.java:173)
    at org.mapstruct.ap.MappingProcessor.process(MappingProcessor.java:154)

【问题讨论】:

  • 能否请edit 提供您遇到的具体编译错误?

标签: java generics mapstruct


【解决方案1】:

我已在我们的跟踪器中提交了issue 以解决 NPE。我怀疑我们是否可以为此类映射器合约创建适当的实现。我们无法确定应该将哪种类型实例化为方法的结果类型。

您以所示方式使用类型参数的理由是什么?您希望生成什么实现?

【讨论】:

  • 嗨,我的观点是映射具有相同字段名称的类型,而不为每个类型指定单独的映射器接口。这几乎是不可能的,因为在一代人的时候,你不知道这些将是什么领域。但是至少映射基类字段是可能的,不是吗?然后你会有一个基本的映射器,它至少映射基类的所有属性。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-02
  • 2020-05-10
  • 2023-03-29
  • 1970-01-01
相关资源
最近更新 更多