如何将Lambda表达式写入方法引用?

时间:2016-01-15 05:33:21

标签: java java-8

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

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

进入方法参考?

2 个答案:

答案 0 :(得分:6)

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

或者更好,

list.sort(Comparator.comparing(Item::getName));

答案 1 :(得分:0)

请记住,lambda表达式基本上是由功能接口定义的单个方法的实现。

任何具有匹配签名(方法名称除外)的方法都可以通过引用来代替lambda表达式。

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

因此,如果您的列表是List<Person>,那么无论方法名称如何,任何类似的方法都可以使用:

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

该方法可以具有任何可见性(公共,私有,......),并且不必是静态的。