Orika映射器 - 现场亚型
问题描述:
我有以下具体类:Orika映射器 - 现场亚型
public class A1 {}
public class B1 extends A1 {}
public class A2 {}
public class B2 extends A2 {}
public class B3 extends A2 {}
而且我想获得一个B2实例映射MapperFacade.map(b1Instance, A2.class)
,当我需要这个,因为A2有许多亚型(B2和B3所示),我需要在需要时映射合适的一个
是否有可能通过Orika实现此目的?
答
对于将面临同样的问题的人,我解决了这个创造这样一个验证这是子类型实例
mapperFactory.classMap(SOURCE.class, DEST.class)
.customize(new CustomMapper<SOURCE, DEST>() {
@Override
public void mapAtoB(SOURCE source, DEST dest, MappingContext context) {
//verifies the type to instantiate
private A2 a2 = isB2() ? new B2() : new B3;
//use the mapper for the class (will use the B2 or B3 mapper)
mapperFacade.map(source.getA2(), a2);
// set the field into the dest object
dest.setB1(a2);
}
}
一个CustomMapper