使用 MapStruct 进行泛型类型转换的最佳实践
如果你想使用 MapStruct 对泛型类型进行转换,可以按照以下步骤:
- 首先,在 mapper 接口中定义一个转换方法,方法的参数和返回值都是泛型类型,例如:
public interface MyMapper {
<T, U> U map(T source, Class<U> targetType);
}
- 接着,在 Mapper 类上添加
@Mapper注解,并指定componentModel为spring或cdi,例如:
@Mapper(componentModel = "spring")
public interface MyMapper {
<T, U> U map(T source, Class<U> targetType);
}
- 在需要进行泛型类型转换的地方,注入 Mapper 实例,并调用
map方法进行转换,例如:
@Autowired
private MyMapper myMapper;
public void convert() {
List<Integer> sourceList = Arrays.asList(1, 2, 3);
List<String> targetList = myMapper.map(sourceList, new TypeRef<List<String>>() {}.getType());
}
在上面的例子中,我们将 List<Integer> 类型转换为 List<String> 类型,并使用了 TypeRef 来获取目标类型。注意,TypeRef 是一个抽象类,需要使用匿名内部类来创建一个实例。
原文地址: https://www.cveoy.top/t/topic/oLVH 著作权归作者所有。请勿转载和采集!