[英]How to avoid cast using Spring ConversionService with target type List<String>?
我有以下 Spring 转换器:
@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;
}
}
在另一个组件中,我通过转换服务使用转换器:
@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);
这有效,但无论如何要避免未经检查的演员阵容?
您可以将目标类型更改为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]);
}
}
然后以这种方式进行转换:
List<String> rows = Arrays.asList(conversionService.convert(obj, String[].class));
PS受此答案启发: https : //stackoverflow.com/a/11845385/5572007
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.