我有一个这样的枚举:
public enum Type{
CSV, EXCEL, PDF, URL, NULL
}
Run Code Online (Sandbox Code Playgroud)
现在我从xml文件中读取一个String并用于Type.valueOf(string);将值解析为枚举.如果xml文件中不存在此部分,则字符串是否null存在"null".有没有办法转换null为"null"或应该更改return null;为return "null";?或者应该为null甚至不是枚举的一部分?
你应该做的是使用别的东西,NULL并以不同的方式解析这种情况:
public enum Type {
CSV, EXCEL, PDF, URL, NONE;
public static Type from(String text) {
if (text == null) {
return NONE;
} else {
return valueOf(text.toUpperCase());
}
}
}
Run Code Online (Sandbox Code Playgroud)
或者更好的是,使用选项:
public enum Type {
CSV, EXCEL, PDF, URL; // Note the absence of NULL/NONE/WHATEVER
public static Optional<Type> from(String text) {
return Optional.ofNullable(text)
.map(String::toUpperCase)
.map(Type::valueOf);
}
}
Run Code Online (Sandbox Code Playgroud)