Java 8 流 : convert comma separated string to the list of abstract Enum

标签 java list intellij-idea enums java-stream

是否可以使用流将逗号分隔的字符串转换为 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/

相关文章:

java - 如何构建基于 lambda 的 Fluent 构建器?

java - 无法反序列化实例,超出 START_ARRAY token

python - 使用另一个包含 Python 长度的列表拆分列表

java - 遍历 Map<String,List<Object>> 的内容并将 List<Object> 的值分配给单独的 List<Double>

java - Intellij/Android Studio 可以将多个 catch block 合并为一个吗?

java - 如何解决依赖版本冲突?

java - Jersey 记录过滤器

Java 平等行为未按预期运行

python - 从句子中输出一个列表并计算每个单词的字符数

linux - 如何在 IntelliJ IDEA 中设置文件管理器?