我正在尝试使用%
来指定DTO中的简单String字段到Converter
- Object的映射,该对象是另一个复杂Object的一部分。问题是,TypedString
是几个实现的接口。
如果我使用特定的实现,这样的转换器可以工作,但如果我在运行时使用泛型来定义Type,则不会这样(见下文)。在这种情况下,当我调用TypedString
时,未在运行时选择转换器。
这不适合我,因为我必须为每个实现编写转换器。
是否可以使用泛型在运行时定义目标类型?
P.S。:当前转换器通过反射创建一个实例,它可以工作!
感谢。
此代码有效
modelmapper.map()
但如果我将其添加到import org.modelmapper.Converter;
import org.modelmapper.ModelMapper;
import org.modelmapper.spi.MappingContext;
public class MyModelMapper extends ModelMapper {
public MyModelMapper() {
super();
Converter<?, ?> converter = new Converter<String, ParticularDestType>() {
@Override
public SupplierId convert(MappingContext<String, ParticularDestType> context) {
return (ParticularDestType) TypedStringConverter.createNewInstanceFromValue(context
.getSource(), ParticularDestType.class);
}
};
addConverter(converter);
}
}
@AllArgsConstructor
public class ParticularDestType implements TypedString {
private String value;
}
(即MyModelMapper
),则无法使用此功能!!!
addConverter(new ModelMapperTypedStringConverter<ParticularDestType>())