1

Java 8 のラムダ関数でチェック例外をキャッチするために、 Durian ライブラリの Errors クラスを使用しようとしています。

私は簡単な関数を書きました:

void eat(NsiItemInfoType food) throws CantUpdNSI {}

そしてそれを呼び出そうとしています:

このコードはうまくいきます:

res.getNsiList().getNsiItemInfo().stream().forEach(Errors.rethrow().wrap(this:: eat) );

しかし、このコードはコンパイラ エラーを引き起こしますメソッド wrap(Throwing.Function) は Errors.Rethrowing 型に対して曖昧です

res.getNsiList().getNsiItemInfo().stream().forEach(Errors.rethrow().wrap(t -> eat(t)) );

理由がわかりません。

ここから例を取得しました: https://github.com/diffplug/durian/blob/v2.0/test/com/diffplug/common/base/ErrorsExample.java

ドリアンのバージョン: com.diffplug.durian 3.4.0

4

1 に答える 1

1

次に、eat() の上にブラケットを配置する必要があります。

res.getNsiList().getNsiItemInfo().stream().forEach(Errors.rethrow().wrap(t ->{ eat(t); }) );
于 2016-12-15T02:44:30.357 に答える