Works by

Ren's blog

@rennnosuke_rk 技術ブログです

文字列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に繋げられるのは初めて知った。