java-8 - 将此 lambda 替换为方法引用 'Objects::nonNull'

标签 java-8

我编写了代码来从包含日期变量的对象列表中查找最新日期。

list.stream().map(segment->segment.lastLoad).filter(x->x!=null).max(Date::compareTo).get()

但我收到声纳问题说明

Replace this lambda with method reference 'Objects::nonNull'.

我不知道在哪里可以使用声纳 lint 问题所述的方法引用。

最佳答案

.filter(x->x!=null) == .filter(Objects::nonNull)

有趣的是,您已经在以下位置使用了方法引用(但没有看到这个):

max(Date::compareTo)

此外,您显然正在返回 Date但来自Optional<Date> ,您应该收到警告(如果使用 IDEA),调用 get 是不安全的。直接在 Optional .

您也可以替换 max(Date::compareTo)max(Comparator.naturalOrder())Date已经是Comparable .

关于java-8 - 将此 lambda 替换为方法引用 'Objects::nonNull',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45238341/

相关文章:

java - 如何使用 Java 8 将方法传递给注释?

java - 在 LocalDate 和 sql.Date 之间转换

Java 8 双大括号初始化和名称冲突

lambda - 如何使用 Java 8 Lambda 验证两个变量

java - 确定 Java 8 DateTimeFormatter 是否包含足够的时区信息

java-8 - 了解方法引用

java - 如何从 oracle 网站下载 JDK 的特定更新?

java - 我需要迭代和计算 Nested Map<key, someObjectArray[]>

Java 8 流组按最小值和最大值

java 8 - ZonedDateTime 不等于另一个 ZonedDateTime