然后他举了例子,其中之一是更准确地说,函数接口被定义为仅具有一个抽象方法的任何接口。
Comparator
接口:
public interface Comparator<T> {
int compare(T o1, T o2);
boolean equals(Object obj);
}
我测试了Lambda函数可以替代Comparator参数的使用,例如:Collections.sort(list, (a, b) -> a-b),并且它可以工作。但是在Comparator接口中,compare和equals方法都是抽象的,这意味着它有两个抽象方法。根据定义,一个接口应该只有一个抽象方法,那么为什么这里还能正常工作呢?我漏掉了什么吗?