Hatena::ブログ(Diary)

宮川拓の日記 このページをアンテナに追加 RSSフィード Twitter

2014-06-09

Java の throws 節では型変数が使える

つい先だって知ったのですが、 Javaメソッドの throws 節では型変数が使えます。

これによって、投げる可能性のある例外の型が使い手側で変えられるようなメソッドを書くことができます。たとえば次のプログラムのように、例外の型と例外オブジェクトの生成を使い手にまかせる汎用の表明メソッドが書けます。 *1

class Checker {
    static <T extends Throwable> void
    check(boolean condition, Supplier<T> supplier) throws T {
        if (! condition) {
            throw supplier.get();
        }
    }
}

class SomeException extends Exception {
}

public class Main {
    public static void main() throws SomeException {
        Checker.check(isEverythingGoingWell()
                , () -> new SomeException("Boo"));
    }
}

標準 API の中では、 Optional.orElseThrow がこのような設計になっています。

*1:表明はチェック例外を投げるべきでないので、この例はいまいちです。他に思い付かなかった。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/miyakawa_taku/20140609/1402320680