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.受此答案启发: