Вы можете использовать orElseGet
с поставщиком для вызова некоторой функции, которая вычисляет значение, если необязательный параметр пуст. Если значение присутствует, оно возвращает значение, в противном случае возвращает результат, полученный функцией-поставщиком. В вашем случае вы должны пройти Supplier<String>
. Более того, тип возврата после распаковки Optional
должен быть String
, а не Optional<String>
.
String totalBoxes = totalBoxesLastPage
.orElseGet(() -> nextToLastPage.flatMap(p -> p.locate(INVOICE_TOTAL_AMOUNT_BOXES))
.orElseThrow(IllegalStateException::new));