在 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().