处理与 Java 枚举不匹配的字符串
我正在编写一个解释器,它解析字符串数组并为该文件中的每个单词分配一个数值。
我想要完成的是:
如果在枚举中找不到该单词,则为数组的该特定元素调用外部方法 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;
}
}
不幸的是,当在输入中找到不等于“keyword0”或“keyword1”的内容时,我得到
没有枚举常量类
提前致谢!
I am writing an interpreter that parses an array of String and assigns each word in that file a numeric value.
What I want to accomplish, is this:
If the word is not found in the enum, call an external method parse()
for that particular element of the array.
My code looks similar to this:
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;
}
}
Unfortunately, when this finds something that does not equal "keyword0" or "keyword1" in the input, I get
No enum const class
Thanks in advance!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
当没有对应的枚举值时,总会抛出
IllegalArgumentException
。只要抓住这个,你就很好了。When there's no corresponding enum value, there will always be an
IllegalArgumentException
thrown. Just catch this, and you're good.问题是,如果输入不是可能的枚举值,则
valueOf
会抛出IllegalArgumentException
。您可能解决此问题的一种方法是......如果您正在进行繁重的解析,您可能还想研究一个完整的解析器,例如 ANTLR 也是如此。
The problem is that
valueOf
throws anIllegalArgumentException
if the input is not a possible enum value. One way you might approach this is...If you're doing heavy duty parsing you may also want to look into a full fledged parser like ANTLR too.