MapStruct 范型转换:使用自定义 Mapper 或 内置 TypeConversion
MapStruct 可以通过使用自定义 Mapper 或 使用内置的 TypeConversion 进行范型转换。
- 使用自定义 Mapper
首先,创建一个自定义 Mapper 类,实现范型转换的方法。例如,假设我们有一个范型类 'Source
public class Source<T> {
private T value;
// getter and setter
}
public class Target<T> {
private T data;
// getter and setter
}
@Mapper
public interface CustomMapper {
@Mapping(source = "value", target = "data")
<T> Target<T> sourceToTarget(Source<T> source);
}
在这个 Mapper 中,我们定义了一个 'sourceToTarget' 方法,用于将 'Source
- 使用内置的 TypeConversion
MapStruct 也提供了内置的 TypeConversion,可以将一个范型类型转换为另一个范型类型。例如,我们同样想要将 'Source
@Mapper
public interface TypeConversionMapper {
@Mapping(target = "data", source = "value", qualifiedByName = "convert")
<T> Target<T> sourceToTarget(Source<T> source);
@Named("convert")
static <T> T convert(Object value) {
// custom conversion logic
}
}
在这个 Mapper 中,我们同样使用了 'sourceToTarget' 方法,但是我们使用了 'qualifiedByName' 属性指定了一个名为 'convert' 的转换器。然后,我们定义了一个 'convert' 方法,用于将 'value' 转换为 'data' 属性。注意,我们同样使用了范型类型 '
以上两种方式都可以实现范型转换,具体使用哪种方式取决于具体的场景和需求。
原文地址: https://www.cveoy.top/t/topic/oLVK 著作权归作者所有。请勿转载和采集!