ホームページ >Java >&#&チュートリアル >Java 8 ラムダ式でチェックされた例外を処理する方法?
Java 8 の例外を伴う Lambda 関数
Java 8 では、ラムダ関数を使用して特定のシグネチャを持つメソッドを参照できます。ただし、参照されるメソッドがチェック例外を宣言する場合、ラムダ参照の定義は困難になる可能性があります。
問題
引数として文字列を受け取り、 Integer を返しますが、IOException をスローする場合があります:
Integer myMethod(String s) throws IOException
このメソッドへのラムダ参照?
解決策
ラムダ参照で例外を処理するには、主に 2 つのアプローチがあります。
1.カスタム関数インターフェイス
コードを制御できる場合は、チェック例外を宣言するカスタム関数インターフェイスを定義できます。
@FunctionalInterface public interface CheckedFunction<T, R> { R apply(T t) throws IOException; }
これにより、メソッドへの参照を作成できます。チェックされた例外をスローするもの:
void foo (CheckedFunction f) { ... }
2.非チェック メソッドでのラップ
メソッド シグネチャの変更がオプションでない場合は、チェック例外を宣言しないメソッドでチェック メソッドをラップできます:
public Integer myWrappedMethod(String s) { try { return myMethod(s); } catch(IOException e) { throw new UncheckedIOException(e); } }
ラップされたメソッドを参照できます:
Function<String, Integer> f = (String t) -> myWrappedMethod(t);
以上がJava 8 ラムダ式でチェックされた例外を処理する方法?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。