【问题标题】:Replace this lambda with method reference 'Objects::nonNull'将此 lambda 替换为方法引用“Objects::nonNull”
【发布时间】:2017-07-21 21:08:44
【问题描述】:

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

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

但我收到声纳问题说明

将此 lambda 替换为方法引用“Objects::nonNull”。

我无法弄清楚在哪里可以使用声纳皮棉问题所述的方法参考。

【问题讨论】:

标签: java-8


【解决方案1】:
.filter(x->x!=null) == .filter(Objects::nonNull)

有趣的是,你已经使用了一个方法引用(但没看到这个):

max(Date::compareTo)

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

您还可以将 max(Date::compareTo) 替换为 max(Comparator.naturalOrder()),因为 Date 已经是 Comparable

【讨论】:

  • 首先,投票。我在这里添加了一些快捷方式,如果你使用IDEA,请将光标放在突出显示的部分,然后按ALT+ENTER,然后可以看到优化选项。
  • 我不知道Objects 类。谢谢你,现在我知道了。
  • ...我建议将max(Date::compareTo) 替换为max(Comparator.naturalOrder())
猜你喜欢
  • 2018-12-26
  • 2018-12-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-18
  • 2019-05-11
相关资源
最近更新 更多