是否可以使用流将逗号分隔的字符串转换为 java.lang.Enum
列表?
我的原始代码如下,可以正常工作:
List<String> inValuesStr = Arrays.asList(criteria.getValue().toString().split(","));
List<Enum> inValues = new ArrayList<>();
for (String val : inValuesStr){
inValues.add(Enum.valueOf(path.getType(),val));
}
我尝试将其重构为以下代码:
List<Enum> inValues = Arrays.stream(criteria.getValue().toString().split(","))
.map(v -> Enum.valueOf(path.getType(),v))
.collect(Collectors.toList());
看起来非常基本...但是,显示以下编译时错误:
Error:(--, --) java: incompatible types: java.lang.Object cannot be converted to java.util.List<java.lang.Enum>
我不明白错误在哪里。有人有同样的经历吗?感谢您分享解决方案。
最佳答案
这对我来说效果很好:
enum Ascii {
A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z;
}
private void test() throws InterruptedException {
List<String> inValuesStr = Arrays.asList("A,B,C,D,E,F,G,H,I,J,K,L,M,N".split(","));
List<Ascii> list = inValuesStr.stream()
.map(s -> Ascii.valueOf(s))
.collect(Collectors.toList());
}
关于Java 8 流 : convert comma separated string to the list of abstract Enum,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57058206/