我过去在Java中使用过枚举,但是由于某种原因,我现在遇到一个奇怪的错误。它引发错误的代码行是:
switch(ConfigProperties.valueOf(line[0].toLowerCase()){
...
}
我正在
java.lang.IllegalArgumentException: No enum const class
allautomator.ConfigProperties.language
在示例行中是一个字符串数组。
我现在真的很困惑,我不知道可能是错的。
最佳答案
枚举常量区分大小写,因此请确保您的常量确实是小写字母。另外,我建议您也对输入内容进行trim()
,以确保其中没有前导/尾随空白:
ConfigProperties.valueOf(line[0].toLowerCase().trim())
作为引用,这是一个包含您的代码行的示例程序:
enum ConfigProperties { prop1, prop2 }
class Test {
public static void main(String[] args) {
String[] line = { "prop1" };
switch (ConfigProperties.valueOf(line[0].toLowerCase())) {
case prop1: System.out.println("Property 1"); break;
case prop2: System.out.println("Property 2"); break;
}
}
}
输出:
Property 1