在此之前,我们通常使用匿名内部类的方式给出函数式接口(一个接口中,只有一个接口方法,就叫函数式接口)的实现,例如集合排序:
Collections.sort(names, new Comparator<String>() {
@Override
public int compare(String a, String b) {
return b.compareTo(a);
}
});
当然,也可以选择不这么做,直接对元素实现Comarable接口。
java8以后,可以对这种函数式接口实现方法进行简化,去除复杂的接口实例化声明:
Collections.sort(names, (String a, String b) -> {
return b.compareTo(a);
});
因为只有一句处理,还可以继续简化:
Collections.sort(names, (String a, String b) -> b.compareTo(a));
甚至,我们可以把类型也去掉,让编译器自己判断:
names.sort((a, b) -> b.compareTo(a));