[Java] switch文で文字列を評価したい
Javaのswitch文は、なぜか文字列を指定できません。
なので、通常はif-elseif-elseを書き綴る必要があります。
enumを使用する方法もありますが、定義が面倒です。
ですが、現在の最新バージョンである”Java SE 7“では、文字列が使えるように拡張されています。
public String switchTest(String argument) {
String result = "";
switch (argument) {
case "value1":
result = "ok1";
break;
case "value2":
case "value3":
result = "ok2";
break;
case "value4":
result= "warning"
default:
throw new IllegalArgumentException("InvalidValue=" + argument);
}
System.out.println(result);
return result;
}
これは便利です。
一般的にif-elseよりもswitchのほうが効率的なコードになると言われていますし、何より見やすいです。
それにしても、”Java SE 7“ってもう正式リリースされていたんですね。
全然知らなかったです。(ずーっとベータ版だったイメージが)
ただ、実際のところ”Java SE 7“を業務で使えるようになるのはいつになるんでしょう。
単純にJAVA_HOME切り替えだけで動けばいいんですけどね。
Tomcatとの兼ね合いとかもあって、しばらくは無理な気がします。
“Java SE 7“には他にも拡張された機能があります。
クラスメソッド開発ブログさんで紹介されていますので、参考にどうぞ
== ランキングに参加しています。ぜひクリックお願いします ==
[Flex] TextInputにmaxCharsを指定した場合の不具合回避 (Flex4.5.1以下限定) トビラフォンの便利な使い方
上のソースの場合、argument = nullの場合にNullPointerExceptionが発生する。
そこがJava7の文字列Switch文の難点。
結局、defoult配下のチェックがnull判定とdefaultで2回書く羽目になったり。
コメントありがとうございます。
確かにNullPointerになりますね。
Javaの文字列比較が==ではなく、equalsメソッドで行うため、常にnullでないかを判断する必要があり、面倒です。