用方法引用'Objects :: nonNull'替换这个lambda

时间:2017-07-21 12:59:17

标签: java-8

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

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

但我正在收听声纳问题

  

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

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

1 个答案:

答案 0 :(得分:7)

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

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

max(Date::compareTo)

此外,您显然已退回Date,但是Optional<Date>,您应该收到警告(如果使用IDEA),直接致电get是不安全的Optional

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