Java отображение в родительский класс - PullRequest
0 голосов
/ 11 февраля 2020

Я изо всех сил пытаюсь сделать сопоставление от класса B к любому подклассу A. См. Код ниже. Кажется, это невозможно с ModelMapper, так как он игнорирует конвертер, если он не является точным соответствием. Не могли бы вы порекомендовать подобную библиотеку, способную на это? Или любая рекомендация, как сделать подобное поведение, не указав все возможные подклассы явно. Большое спасибо.

package com.randakm.p2plibrary.service.main;

import org.modelmapper.Converter;
import org.modelmapper.ModelMapper;
import org.modelmapper.spi.MappingContext;

public class ServiceMain {

    /**
     * @param args
     */
    public static void main(String[] args) {
        ModelMapper mapper = new ModelMapper();
        mapper.addConverter(new B2AConverter());

        B b = new B();
        b.b = "some value";
        A a = mapper.map(b, AA.class);
        System.out.println("a: "+a.a); // I expect this to have the value from b

    }

}

abstract class A {
    String a;
}

class AA extends A {
    String aa;
}

class AAA extends A {
    String aaa;
}

class B {
    String b;
}

class B2AConverter implements Converter<B, A> {

    @Override
    public A convert(MappingContext<B, A> context) {
        B b = context.getSource();
        A a;
        try {
            a = context.getDestinationType().newInstance();
            a.a = b.b;
            return a;
        } catch (InstantiationException | IllegalAccessException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return null;
    }

}
...