[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でないかを判断する必要があり、面倒です。