最近我开始探索Java 8,我无法理解Java功能实现lambda表达式所必需的"功能接口"的概念.有一个非常全面的 Java函数中的lambda函数指南,但我仍然坚持用于定义函数接口概念的章节.定义如下:
更确切地说,功能接口被定义为具有恰好一个抽象方法的任何接口.
然后他进入示例,其中一个是Comparator界面:
Run Code Online (Sandbox Code Playgroud)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方法都是抽象的,这意味着它有两个抽象方法.那么如果定义要求接口只有一个抽象方法,那么它如何工作呢?我在这里错过了什么?