枚举valueOf IllegalArgumentException:没有枚举const类

时间:2011-05-19 18:05:15

标签: java enums

我过去曾在java中使用过枚举,但出于某种原因,我现在收到一个奇怪的错误。抛出错误的代码行是:

switch(ConfigProperties.valueOf(line[0].toLowerCase()){
    ...
}

我正在

java.lang.IllegalArgumentException: No enum const class
  allautomator.ConfigProperties.language 
示例行中的

是一个字符串数组。

我现在真的很困惑,我不知道可能出现什么问题。

2 个答案:

答案 0 :(得分:16)

枚举常量区分大小写,因此请确保常量确实是小写的。另外,我建议您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

答案 1 :(得分:0)

我使用的是类似的概念,但在失败的情况下具有默认值

// date is optional, defaults to today
function writeHijri(date, lang) {
  var date = date || new Date();
  lang = lang || 'en';
  var options = {
    year: 'numeric', month: 'long', day: 'numeric'
  };
  return date.toLocaleString(lang + '-u-ca-islamic', options);
}

// Today in English
console.log(writeHijri());

// 1 Jan 2017 converted to Hijri (3 Rab. II 1438) in Arabic
console.log(writeHijri(new Date(2017,0,1), 'ar'));
相关问题