switch文と複数例外のcatch

Java7について今回は少し地味なので2つ紹介。

  • switch文について

Java7のswitch文ではcase句でString型のクラスで条件判断ができるようになっています。

 switch(val) {
     case "JPN":
         System.out.println("Japan");
         break;
     case "US":
         System.out.println("United States");
         break;
     case "UK":
         System.out.println("United Kingdom");
         break;
     default:
         System.out.println("Unknown");
}

特に説明の必要もないと思います。Java6まではString型はcaseでの判定に利用できなかったので多少便利になった気もしますが・・・。

  • 複数例外catchについて

try-catchのcatch句で今まではキャッチする例外の数だけcatchを記述することもあったかと思いますがJava7では複数の例外を1つのcatch句で補足することができます。

try {
    .....
} catch (InstantiationException | IllegalAccessException | InvocationTargetException e) {
    throw new RuntimeException(e);
}

こんなかんじや、

try {
    .....
} catch (InstantiationException | IllegalAccessException | InvocationTargetException e) {
    if (e instanceof InstantiationException) {
        //ログ出力
    } else {
        throw new RuntimeException(e);
    }
}

こんなかんじで、
かなり極端な例ですが、うまく利用すれば冗長な部分を排除し可読性の向上につながるのかなって思います。

乱用は禁物のような気もします。プロジェクトでルールを徹底してやる必要がありそうですね。