プログラマーを職業としてます。 Flex,Air,C#,Oracle,PHPの言語ノウハウを中心に情報発信していきます


[Java] switch文で文字列を評価したい

Javaswitch文は、なぜか文字列を指定できません。
なので、通常は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“には他にも拡張された機能があります。
クラスメソッド開発ブログさんで紹介されていますので、参考にどうぞ

 

== ランキングに参加しています。ぜひクリックお願いします ==

プログラム ブログランキングへ
にほんブログ村 IT技術ブログへ
にほんブログ村

,

2 Responses to “[Java] switch文で文字列を評価したい”

  • AC より:

    上のソースの場合、argument = nullの場合にNullPointerExceptionが発生する。
    そこがJava7の文字列Switch文の難点。
    結局、defoult配下のチェックがnull判定とdefaultで2回書く羽目になったり。

    • propg より:

      コメントありがとうございます。
      確かにNullPointerになりますね。
      Javaの文字列比較が==ではなく、equalsメソッドで行うため、常にnullでないかを判断する必要があり、面倒です。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です