Java Generic Csv字符串到枚举列表

时间:2015-04-11 17:04:19

标签: java generics enums

我想将csv格式的String通用转换为枚举列表。 但是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);
}

1 个答案:

答案 0 :(得分:3)

您必须传递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参数没有任何意义。