id:miyakawa_taku:20140609:1402320680 の続きです。 Java SE 8 では Iterable インタフェースに forEach メソッドが用意されました。いわゆる内部イテレータで、通常は次のようにラムダ式をともなって使います。 List<String> list = ...; list.forEach(str -> System.out.println(str)); forEach に渡すラムダ式の本体では、チェック例外を投げることができません。 forEach の引数は Consumer インタフェースで、その Consumer.accept メソッドには throws 節がないからです。 したがって次のコードはコンパイルエラーになります。 Writer.write メソッドはチェック例外である IOException を投げるからです。 try (
つい先だって知ったのですが、 Java のメソッドの throws 節では型変数が使えます。 8.4.6 Method throws / Java Language Specification これによって、投げる可能性のある例外の型が使い手側で変えられるようなメソッドを書くことができます。たとえば次のプログラムのように、例外の型と例外オブジェクトの生成を使い手にまかせる汎用の表明メソッドが書けます。 *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 {
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く