String
パラメータを持ち、 を返すメソッドへの参照を作成する方法はわかっていますint
。
Function<String, Integer>
ただし、関数が例外をスローする場合は、これは機能しません。次のように定義されているとします。
Integer myMethod(String s) throws IOException
この参照をどのように定義すればよいでしょうか?
ベストアンサー1
次のいずれかを実行する必要があります。
自分のコードの場合は、チェック例外を宣言する独自の機能インターフェースを定義します。
@FunctionalInterface public interface CheckedFunction<T, R> { R apply(T t) throws IOException; }
そしてそれを使用します:
void foo (CheckedFunction f) { ... }
それ以外の場合は、
Integer myMethod(String s)
チェック例外を宣言しないメソッドでラップします。public Integer myWrappedMethod(String s) { try { return myMethod(s); } catch(IOException e) { throw new UncheckedIOException(e); } }
その後:
Function<String, Integer> f = (String t) -> myWrappedMethod(t);
または:
Function<String, Integer> f = (String t) -> { try { return myMethod(t); } catch(IOException e) { throw new UncheckedIOException(e); } };