最近,我开始探索Java 8,但我不太了解Java的lambda表达式实现所必需的“功能接口”的概念。Java中有关于lambda函数的相当全面的指南,但是我陷入了为功能接口的概念定义的章节中。定义如下:
更准确地说,功能接口定义为具有一种抽象方法的任何接口。
然后他继续进行示例,其中一个是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
方法都是抽象的,这意味着它具有两个抽象方法。那么,如果定义要求一个接口仅具有一个抽象方法,那么这将如何工作?我在这里想念什么?
extends
东西,因为它们不是对象,而且因为它是用Java创建的任何类extends Object
,那么拥有它的目的是boolean equals(Object obj);
什么?无论如何,任何实现都可以访问该方法。纯粹是要强调以下事实:对于某些Comparable
实现而言,此方法非常适合对其进行修改?