MapStruct:对象的映射 class

MapStruct: Mapping of Object class

Class Source {
   private String type;
   private Object identifier;
}

标识符可以是 class AppointmentIdentifier 或 JobIdentifier 的对象; 我必须将源映射到具有以下结构的目标。

Class Target {
    private String type;
    private Object identifierBO;
}

标识符BO 可以是class AppointmentIdentifierBO 或JobIdentifierBO 的对象。 下面是我的映射器 class:

@Mapper
public interface ModelMapper {

    Target toTarget(@NonNull final Source source);

    AppointmentIdentifierBO toAppointmentIdentifierBO(AppointmentIdentifier appointmentIdentifier);

    JobBO toJobBO(JobIdentifier jobIdentifier);
}

我知道,我缺少一些有助于将标识符映射到标识符 BO 的配置,但无济于事。

我只知道这样做:

@Mapper
public interface ModelMapper {
    @Mapping(source = "identifier", target = "identifierBO", qualifiedByName = "identifierMapping")
    Target toTarget(Source source);

    @Named("identifierMapping")
    default Object mapIdentifier(Object obj) {
        if (obj instanceof AppointmentIdentifier)
            return toAppointmentIdentifierBO((AppointmentIdentifier) obj);

        if (obj instanceof JobIdentifier)
            return toJobBO((JobIdentifier) obj);

        throw new RuntimeException("Not supported type: " + obj.getClass());
    }

    AppointmentIdentifierBO toAppointmentIdentifierBO(AppointmentIdentifier appointmentIdentifier);

    JobBO toJobBO(JobIdentifier jobIdentifier);
}

可怕吗?是的。作品?是的