Mapstruct:泛型的映射
Mapstruct: mapping of Generics
@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)
我已经在我们的跟踪器中提交了一个 issue 来解决 NPE。我怀疑我们是否可以为这样的映射器合约创建一个合适的实现。我们无法判断应将哪种类型实例化为方法的结果类型。
您以所示方式使用类型参数的理由是什么?您希望生成什么实现?
@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)
我已经在我们的跟踪器中提交了一个 issue 来解决 NPE。我怀疑我们是否可以为这样的映射器合约创建一个合适的实现。我们无法判断应将哪种类型实例化为方法的结果类型。
您以所示方式使用类型参数的理由是什么?您希望生成什么实现?