文字列switchについて
気になったのでメモメモ。あとこの機能、Java8からのものだと思ってた。
java7実装の文字列switch
文字列switch構文内で分岐するとする。
public static String getSwitchString(String str) {
switch (str) {
case "a":
return "str is a";
case "b":
return "str is b";
default:
return "str is not a nor b";
}
}
Stringはオブジェクトである以上nullである可能性がある。 仮に上記のようなswitch文に対してStringのnullオブジェクトが渡った場合、defaultではキャッチされず、そのままぬるぽを吐く。
Exception in thread "main" java.lang.NullPointerException at SwitchTest.getSwitchString(SwitchTest.java:10) at SwitchTest.main(SwitchTest.java:4)
なので、
public static String getSwitchString(String str) {
if (str == null) {
return "null...";
} else
switch (str) {
case "a":
return "str is a";
case "b":
return "str is b";
default:
return "str is not a nor b";
}
}
}
のようにしてnullを退避。
switch構文をそのままelseに繋げられるのは初めて知った。