Java 如何避免使用带有目标类型列表的Spring ConversionService强制转换<;字符串>;?
我有以下弹簧转换器:Java 如何避免使用带有目标类型列表的Spring ConversionService强制转换<;字符串>;?,java,spring,Java,Spring,我有以下弹簧转换器: @Component public class MyObjectToStringList implements Converter<MyObject, List<String>>{ @Override public List<String> convert(MyObject obj) { List<String> items = new ArrayList<>(
@Component
public class MyObjectToStringList implements Converter<MyObject, List<String>>{
@Override
public List<String> convert(MyObject obj) {
List<String> items = new ArrayList<>(
Arrays.asList(
obj.get().split("\\r?\\n")));
items.remove(0);
return items;
}
}
@组件
公共类MyObjectToString实现转换器{
@凌驾
公共列表转换(MyObject对象){
列表项=新的ArrayList(
Arrays.asList(
对象get().split(\\r?\\n”);
项目。删除(0);
退货项目;
}
}
在另一个组件中,我通过转换服务使用转换器:
@Component
@RequiredArgsConstructor
public class MyService {
private final ConversionService conversionService;
public List<String> get(MyObject obj) {
@SuppressWarnings("unchecked")
List<String> rows = (List<String>) conversionService.convert(obj, List.class);
@组件
@所需参数构造函数
公共类MyService{
私有最终转换服务转换服务;
公共列表获取(MyObject对象){
@抑制警告(“未选中”)
List rows=(List)conversionService.convert(obj,List.class);
这是可行的,但是否仍然可以避免未经检查的强制转换?您可以将目标类型更改为
String[]
并按如下方式修改转换器:
@Component
public class MyObjectToStringList implements Converter<MyObject, String[]>{
@Override
public String[] convert(MyObject obj) {
List<String> items = new ArrayList<>(
Arrays.asList(
obj.get().split("\\r?\\n")));
items.remove(0);
return items.toArray(new String[0]);
}
}
@组件
公共类MyObjectToString实现转换器{
@凌驾
公共字符串[]转换(MyObject obj){
列表项=新的ArrayList(
Arrays.asList(
对象get().split(\\r?\\n”);
项目。删除(0);
return items.toArray(新字符串[0]);
}
}
然后按以下方式执行转换:
List<String> rows = Arrays.asList(conversionService.convert(obj, String[].class));
List rows=Arrays.asList(conversionService.convert(obj,String[].class));
p.S.受此答案启发: