如何将Lambda表达式转换为方法引用?

3

我们如何编写Lambda表达式语句

Collections.sort(list,(a1,a2) -> (a1.getName().compareTo(a2.getName())));

将其转换为方法引用?
2个回答

6
Collections.sort(list, Comparator.comparing(Item::getName));

或者更好的方法是,
list.sort(Comparator.comparing(Item::getName));

0

记住,Lambda表达式基本上是由函数接口定义的单个方法的实现。

除了方法名称之外,具有匹配签名的任何方法都可以被引用,以代替Lambda表达式。

在您的情况下,它是Comparator<? super T>接口和它的int compare(T o1, T o2)方法,因此任何返回int并且接受集合元素类型的两个参数的方法都可以使用。

因此,如果您的列表是List<Person>,则像这样的任何方法都可以工作,而不管方法名称:

public static int xxx(Person p1, Person p2) { ... }

该方法可以具有任何可见性(public、private等),并且不必是静态的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接