我过去在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

10-04 20:17