java - 在 Java 8 Comparator 中添加 Optional.isPresent()

标签 java java-8 option-type

下面是我的 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/

相关文章:

java - 为什么流 average() 方法返回 OptionalDouble 而不是 double?

java - 当我告诉它运行 Java 14 时,为什么 Gradle 会尝试使用 Java 8?

java - 弹出 gridview 单元格 onTOuch

java - 流已被操作或关闭 - Java 8

java - 使用 Java 8 流对集合进行分组和排序

ios - 尝试使用可选运行变量时崩溃

java - 从非 Activity 单例类获取应用程序上下文

java - Hibernate更新记录并实现监听器: getting only required attribute values for event. getOldState()

postgresql - 使用 postgres 表序列而不是共享 hibernate_sequence

java - Optional<T> 用于方法的输入参数