这是我的代码:
return repository.findFirstByFxDateAndTransCurrAndCrdhldBillCurr(
LocalDate.parse(request.getDate()), request.getTransactionCurrency(), request.getBillingCurrency())
.orElse(getCurrencyExchangeRateFromApi(request));
Run Code Online (Sandbox Code Playgroud)
它不起作用,但我将 .orElse 更新为 .orElseGet
return repository.findFirstByFxDateAndTransCurrAndCrdhldBillCurr(
LocalDate.parse(request.getDate()), request.getTransactionCurrency(), request.getBillingCurrency())
.orElseGet(() -> getCurrencyExchangeRateFromApi(request));
Run Code Online (Sandbox Code Playgroud)
它工作完美,我不知道原因,是java8的错误吗?
我尝试再次运行多次,没有任何变化,但我尝试编写一个小示例,可选的 String 而不是来自存储库,也可以。
在.orElse(getCurrencyExchangeRateFromApi(request)),getCurrencyExchangeRateFromApi(request)始终执行(无论 是否Optional为空)。
在.orElseGet(() -> getCurrencyExchangeRateFromApi(request)),getCurrencyExchangeRateFromApi(request)仅当Optional为空时才执行。
如果“不工作”意味着您遇到了异常,则您的getCurrencyExchangeRateFromApi(request)方法可能存在问题。
| 归档时间: |
|
| 查看次数: |
1382 次 |
| 最近记录: |