处理与Java枚举不匹配的字符串

Vic*_*Vic 2 java string enumeration string-matching

我正在编写一个解析器来解析一个String数组,并为该文件中的每个单词分配一个数值.

我想要完成的是这样的:

如果在枚举中找不到该单词,则为parse()该数组的特定元素调用外部方法.

我的代码看起来类似于:

private enum Codes {keyword0, keyword1};

switch Codes.valueOf(stringArray[0])
{

case keyword0:
{
    value = 0;
    break;
}
case keyword1:
{
    value = 1;
    break;
}
default:
{
    value = parse(StringArray[0]);
    break;
}
}
Run Code Online (Sandbox Code Playgroud)

不幸的是,当它在输入中找到不等于"keyword0"或"keyword1"的东西时,我得到了

没有枚举const类

提前致谢!

ste*_*vls 11

当没有相应的枚举值时,总会IllegalArgumentException抛出.抓住这个,你很好.

try {
    switch(Codes.valueOf(stringArray[0])) {
        case keyword0:
           value = 0;
           break;
        case keyword1:
           value = 1;
           break;
    }
}
catch(IllegalArgumentException e) {
    value = parse(stringArray[0]);
}
Run Code Online (Sandbox Code Playgroud)