Мне нужно сделать что-то похожее на простое сопоставление, но я все еще не могу справиться с этим. Что мне нужно сделать, так это сопоставить firstName + lastName для первого класса, который будет указан на втором.Орика Картирование: Конкат двух элементов в один
Что-то вроде этого:
class Person {
String firstName;
String lastName;
}
class PrintablePerson {
String name; // name should be firstName+" "+(lastName)
}
Wich является лучшим способом для достижения этой цели?
UPDATE:
Я уже решил эту проблему путем внедрения свой собственный Mapper, делая это:
public class MyCustomMapper extends CustomMapper<Person, PrintablePerson> {
@Override
public void mapAtoB(Person person, PrintablePerson printablePerson, MappingContext context) {
printablePerson.setName(person.getFirstName() + " " + person.getLastName());
}
}
Тогда я назвал картографа в методе подгоняют с помощью:
mapperFactory.classMap(Person.class, PrintablePerson.class)
.byDefault()
.customize(
new MyCustomMapper()
).register();
Это не работает, настройка устарела, и вы создаете абстрактный класс (CustomMapper) –
На самом деле существует два метода настройки, один из которых устарел и заменен другим. Да, конечно, CustomMapper - это абстрактный класс, но вы можете создать его с помощью внутренней реализации, это обычная практика Java. встроенная реализация методов означает, что Java создает экземпляр анонимного класса, который расширяет абстрактный класс (или реализует интерфейс). Этот анонимный класс является конкретным классом. –
Все еще не работает, я не знаю, почему принимает устаревший метод, и среда IDE жалуется на создание абстрактного класса. Есть идеи? –