2017-08-01 106 views
0

我有以下具體類: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實現此目的?

回答

0

對於將面臨同樣的問題的人,我解決了這個創造這樣一個驗證這是子類型實例

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