Java, сопоставить один и тот же объект различным объектам - PullRequest
0 голосов
/ 01 июля 2018

У меня есть список Car, я хочу сопоставить их с различными специфическими Car как - FordCar, HondaCar, VolkswagenCar ... на основе значения maker атрибут Car, то есть Car.maker

Может ли Dozer, MapStruct сделать это? Или в Java есть какой-нибудь фреймворк, который может это сделать?

Ответы [ 3 ]

0 голосов
/ 01 июля 2018

Если у вас нет дополнительных требований, вы можете сделать это, просто используя 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())
0 голосов
/ 01 августа 2018

После долгого нахождения, вывод - на данный момент MapStruct его не поддерживает. Это отображение записей Map <>. Я сделал обход - сопоставил карту <> с картой <> и выровнял ее, используя свойство JackSon @JsonAnyGetter и @JsonAnySetter

0 голосов
/ 01 июля 2018

Орика, переназначение, Сельма, MapStruct.

Чтобы получить конкретное сопоставление, внедрите его в сопоставитель.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...