java - 如何避免使用具有目标类型 List 的 Spring ConversionService 进行强制转换?
问题描述
我有以下弹簧转换器:
@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));
推荐阅读
- php - 如何从菜单别名获取 Joomla 菜单项 ID
- c# - 按名称获取属性值
- android - 背景位置跟踪以计算他们行进的距离和路线图
- applescript - AppleScript 不会在菜单栏中打开首选项...
- flutter - 如何同时滚动两个水平 ListView?
- c# - 使用 C# API 将 Google BiqQuery 结果导出到 Google 表格的最佳方法
- angular - 如何减小 ngx 数据表的标题字体大小
- react-native - 导航抽屉式导航时反应本机不刷新屏幕
- php - 如何按键对php中的json数组进行排序?
- javascript - 在服务器上获取“१:१३:१२”类型的持续时间。有什么办法可以将其更改为“01:13:12”?