Class Source {
private String type;
private Object identifier;
}
标识符可以是类AppointmentIdentifier或JobIdentifier的对象; 我必须将源映射到目标,它有下面的结构。
Class Target {
private String type;
private Object identifierBO;
}
identifierBO可以是类AppointmentIdentifierBO或JobIdentifierBo的对象。 下面是我的映射器类:
@Mapper
public interface ModelMapper {
Target toTarget(@NonNull final Source source);
AppointmentIdentifierBO toAppointmentIdentifierBO(AppointmentIdentifier appointmentIdentifier);
JobBO toJobBO(JobIdentifier jobIdentifier);
}
我知道,我缺少了一些配置,这些配置将有助于将identifierBO映射到identifierBO,但是没有帮助。
我只知道这样做:
@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);
}
可怕? 是的。 管用? 是的。