Mapstruct java.util. Преобразование стека - PullRequest
0 голосов
/ 19 сентября 2019

Итак, у меня есть три класса Java.

class A {
   private Long id; 
   //getter, setter, etc
}

class B {
   private Stack<A> myField;
   //getter, setter, etc
}

class C {
   private Stack<Long> myField;
}

Я хочу преобразовать объекты класса B в объекты класса C, порядок обоих стеков должен быть одинаковым.

Я знаю, как сделать это вручную с помощью дополнительной структуры, циклов и т. Д. Но есть ли какой-нибудь элегантный способ сделать это с помощью Mapstruct?

1 Ответ

0 голосов
/ 19 сентября 2019

Итак, после нескольких попыток самый элегантный способ, который я нашел на данный момент, заключается в следующем:

@Mapper
public interface CMapper {

    C BtoC(B b);

    default Long myFieldConverter(A myField) {
        return myField.getId();
    }
}

Я вручную вызываю getId (), но, по крайней мере, я не выполняю итерацию по коллекции.

Я пытался что-то сделать с аннотациями, такими как

@Mapping(target = "", source = "id")
Long myFieldConverter(A myField);

, но не нашел, что поместить в target, потому что поле field - это не бин, а Long, без полей, сеттеров и т. Д.И мне не удалось найти способ поместить ссылку на конструктор в «target».

...