Java 枚举列表的通用 Csv 字符串
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
参数没有任何意义。
我想将 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
参数没有任何意义。