在 Java 8 比较器中添加 Optional.isPresent()
Adding Optional.isPresent() inside Java 8 Comparator
下面是我的 Java 8 代码,当我 运行 声纳时,我得到“在访问值之前调用 "Optional#isPresent()"。 “ 信息。请帮助我如何为 subPlan.getTaxWthholding().getFederalTaxDetails().getFederalTaxPercentage().
添加 isPresent()
SubPlan maxSubPlan = subPlanList.stream()
.filter(s -> s.getIsSelected())
.max(Comparator.comparing(subPlan ->
subPlan.getTaxWthholding().getFederalTaxDetails().getFederalTaxPercentage()))
.get();
我认为它不希望您在 Comparator
中添加 isPresent
。
问题大概是最后一个get()
.
max()
可能return一个空的Optional
(如果subPlanList
为空,或者如果filter
步骤过滤掉所有元素),所以您应该将 get()
替换为 orElse(defaultValue)
、orElseGet()
或 orElseThrow()
.
下面是我的 Java 8 代码,当我 运行 声纳时,我得到“在访问值之前调用 "Optional#isPresent()"。 “ 信息。请帮助我如何为 subPlan.getTaxWthholding().getFederalTaxDetails().getFederalTaxPercentage().
isPresent()
SubPlan maxSubPlan = subPlanList.stream()
.filter(s -> s.getIsSelected())
.max(Comparator.comparing(subPlan ->
subPlan.getTaxWthholding().getFederalTaxDetails().getFederalTaxPercentage()))
.get();
我认为它不希望您在 Comparator
中添加 isPresent
。
问题大概是最后一个get()
.
max()
可能return一个空的Optional
(如果subPlanList
为空,或者如果filter
步骤过滤掉所有元素),所以您应该将 get()
替换为 orElse(defaultValue)
、orElseGet()
或 orElseThrow()
.