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

克莱门特·克里皮(Clement Crepy)

我想将csv格式的String通用地转换为枚举列表。但是,java无法识别通用枚举类型。

我正在使用番石榴,不能使用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);
}
康斯坦丁·约夫科夫(Konstantin Yovkov)

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章