MapStruct 泛型转换:示例和最佳实践
MapStruct 支持范型转换,转换过程与普通类型转换相似。下面是一个示例:
假设我们有两个类:
public class Source<T> {
private T value;
// getter, setter
}
public class Target<T> {
private T value;
// getter, setter
}
现在我们想要使用 MapStruct 将 Source 转换为 Target:
@Mapper
public interface MyMapper {
<T> Target<T> sourceToTarget(Source<T> source);
<T> Source<T> targetToSource(Target<T> target);
}
在这个接口中,我们定义了两个泛型方法。'sourceToTarget' 方法将 Source 转换为 Target,而 'targetToSource' 方法则将 Target 转换为 Source。在这两个方法中,我们使用了泛型类型 '
在实际使用时,我们可以这样调用这些方法:
MyMapper mapper = Mappers.getMapper(MyMapper.class);
Source<Integer> source = new Source<>();
source.setValue(123);
Target<Integer> target = mapper.sourceToTarget(source);
System.out.println(target.getValue()); // 输出 123
Source<Integer> source2 = mapper.targetToSource(target);
System.out.println(source2.getValue()); // 输出 123
在这个示例中,我们首先创建了一个 Source 对象,并将其值设置为 123。然后,我们使用 'sourceToTarget' 方法将其转换为 Target 对象,并将转换后的对象打印出来。接着,我们使用 'targetToSource' 方法将 Target 对象转换回 Source 对象,并将转换后的对象打印出来。
需要注意的是,在这个示例中,我们使用了两个泛型方法来实现 Source 和 Target 的转换。如果我们只需要转换特定类型的 Source 和 Target,我们可以将泛型类型指定为具体类型,例如:
@Mapper
public interface MyMapper {
Target<String> sourceToStringTarget(Source<String> source);
Source<Integer> targetToIntegerSource(Target<Integer> target);
}
在这个示例中,我们将泛型类型 '
原文地址: https://www.cveoy.top/t/topic/oLVs 著作权归作者所有。请勿转载和采集!