我正在编写一个使用扫描仪读取令牌/值对的平面文件解析器。正在读取的文件包含令牌“类”。令牌稍后在 switch 语句中使用,并使用(Java 7 之前的)valueOf(token) Java 习惯用法来生成枚举值。(我使用 Java6 是为了与 GWT 兼容。)作为一种解决方法,我在枚举中使用大写值和 valueOf(token.toUpperCase())。
public enum ParseTags {
CODE, CLASS, INSTRUCTOR, HOURS;
}
// . . .
token = scanner.next();
value = scanner.next();
switch (ParseTags.valueOf(token.toUpperCase())) {
case CODE:
entry.setCode(value);
break;
case CLASS:
entry.setClass(value);
break;
因为这是被编译成 javascript,所以我想避免每次迭代时额外的“toUpperCase()”操作;不确定目标平台上的性能。有没有更优雅的方式来表示枚举中的保留字?这可以通过 Java7 的 String 开关很好地处理,但同样,我仅限于 Java6sdk。