スキャナーを使用してトークンと値のペアを読み取るフラットファイルパーサーを作成しています。読み取られるファイルには、トークン「クラス」が含まれています。トークンは後でswitchステートメントで使用され、(Java 7より前の)valueOf(token)Javaイディオムを使用して列挙値を生成します。(私はGWTとの互換性のためにJava6を使用しています。)回避策として、列挙型で大文字の値と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に限定されています。