memoRandum

日々の備忘録

switch文でStringを使う

Javaのswitch文で、caseにString型の値を指定しようと思うとちょっと面倒臭い。

 

Enum型のオブジェクトを用意して、その中でString型の値を列挙しておく。

新たなデータを増やしたい場合は、Enum型のオブジェクトへの追加と、

caseの追加が必要になる。

※JavaSE7からは、String型も指定できるようになってるはず。

 

例えば、都道府県ごとに処理したい場合はこんな感じ。

  
  enum Prefecture {
    Kyoto, Tokyo, Osaka
  }
  
  public class EnumPref {
    public static String getPref(Prefecture pref) {
      
      String result = "";
      
      switch(pref) {
        case Kyoto:
          result = "京都";
          break;
          
        case Tokyo:
          result = "東京";
          break;
          
        case Osaka:
          result = "大阪";
          break;
          
        default:
          result = "それ以外だよ!";
      }
      
      return result;
    }
  }

うん、やっぱり面倒。

これと同じ処理をGroovyで書いてみるとこんな感じ。

  def result
  def pref = "Tokyo"
  
  switch(pref) {
    case "Kyoto" : result = "京都"; break
    case "Tokyo" : result = "東京"; break
    case "Osaka" : result = "大阪"; break
    default      : result = "それ以外だよ!"
  }