繁体   English   中英

如何避免使用具有目标类型 List 的 Spring ConversionService 进行转换<String> ?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM