最も内側のスコープに達していない場合に例外がスローされるようなラムダをいくつかネストしたいとします。これはどうすればできますか?ネストされたラムダが最も内側のスコープに到達できない場合に例外をスローする方法はありますか?
boolean someError = true;
procA(new Object()).ifPresent(a -> {
procB(a).ifPresent(b -> {
System.out.println(a);
System.out.println(b);
// Can't do this: "Local variable someError in an enclosing scope must
// be final or effectively final"
someError = false;
});
});
if (someError)
throw new RuntimeException("Some error!");
これは私の他の質問に似ています:How to chain lambdas with all optional values available at the innermost scope without nesting Optional#ifPresent()?
違いはifPresent()
を入れ子にすることは許可されていることです。 get()
を使用することは、オプションのisPresent()の値がチェックされていない場合に実行時の例外が発生するのを避けるために、引き続き許可されていません。