Java,将同一对象映射到不同的对象

时间:2018-07-01 09:21:38

标签: java dozer mapper orika

我有一个Car的列表,我想将它们映射到其他特定的Car,例如-FordCarHondaCarVolkswagenCar ...基于maker的{​​{1}}属性的值,即Car

Dozer,MapStruct可以做到吗? 还是Java中有任何框架可以做到这一点?

3 个答案:

答案 0 :(得分:0)

如果您没有任何其他要求,则只需使用Java-8即可。

Map<String, Supplier<Car>> creators = new HashMap(){{
  put("honda", ()-> new HondaCar());
  put("ford", ()-> new FordCar());
}}

listOfCars.map(Car::getMaker).map(maker -> creators.get(maker).get())

答案 1 :(得分:0)

经过长时间的寻找,得出结论-到目前为止,MapStruct不支持该结论。那就是Map <>条目的映射。 我做了一个回合-将Map <>映射到Map <>并使用JackSon属性@JsonAnyGetter@JsonAnySetter

将其展平

答案 2 :(得分:-1)

Orika,重新映射,Selma,MapStruct。

要获取特定的映射,请在映射器中实现。