Java 通用 Csv 字符串到枚举列表

标签 java generics enums

我想将 csv 形式的字符串一般转换为枚举列表。 但是 java 不会识别通用枚举类型。

我正在使用 Guava,无法使用 Java 8。

有什么想法吗?

public static <E extends Enum<E>> List<E> getEnumList(String csvLine) {
    List<String> csvList = Arrays.asList(csvLine.split(","));

    Function<String, E> enumList = new Function<String, E>() {
       @Override
       public E apply(String csvStr) {
          return Enum.valueOf(E.class, csvStr);
       }
    };

    return Lists.transform(csvList, enumList);
}

最佳答案

您必须通过Class<E> ,因为E将被删除(并在运行时替换为特定的内容)。

类似于:

public static <E extends Enum<E>> List<E> getEnumList(String csvLine, Class<E> clazz) {
    List<String> csvList = Arrays.asList(csvLine.split(","));

    Function<String, E> enumList = new Function<String, E>() {
       @Override
       public E apply(String csvStr) {
          return Enum.valueOf(clazz, "");
       }
    };

    return Lists.transform(csvList, enumList);
}

作为旁注,我想您必须替换空字符串 ""csvStr ,否则csvStr参数没有任何意义。

关于Java 通用 Csv 字符串到枚举列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29580605/

相关文章:

scala - 在 scala 中的类中使用数字类型界限的正确方法

java - 对多个几乎相似的 fragment 重复使用相同的适配器

android - RxJava 通用方法来检查订阅者中的错误消息

具有多个数据类型字段的 Java 枚举?

c++ - 定义基于模板的映射指针,以便在验证范围时将 int 解析为 enum

Java正则表达式匹配确切数量的破折号

java - 编译器对覆盖与重载的解释

java - 从 Activity 返回时如何部分填充进度条?

c# - 如何在 Visual Studio 2022 for net6.0 的 C# 中将枚举添加到新控制台模板?

java - OSX 10.9.1 : "Tomcat started." localhost:8080 says "no data received"