Java Generic Csv String to Enum List



我想将 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 参数没有任何意义。

最新更新