下面是我的 Java 8 代码,当我运行 Sonar 时,我收到“Call "Optional#isPresent()"before accessing the value.”消息。请帮助我如何为 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()
可能会返回一个空的 Optional
(如果 subPlanList
为空,或者如果 filter
步骤过滤掉所有元素),因此您应该将 get()
替换为 orElse(defaultValue)
、orElseGet()
或 orElseThrow ()
。
关于java - 在 Java 8 Comparator 中添加 Optional.isPresent(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54880786/