最近,我开始探索Java 8,我不太理解“函数接口”的概念,它是Java实现lambda表达式所必需的。在Java中有一个指向lambda函数的pretty comprehensive guide,但是我被the chapter that gives definition to the concept of functional interfaces卡住了。定义是这样的:
更准确地说,函数接口被定义为只有一个抽象方法的任何接口。
然后他继续举例,其中之一是Comparator
接口:
公共接口比较器{ int compare(T o1,T o2);boolean equals(Object obj);}
我能够测试我可以使用lambda函数来代替比较器参数,并且它可以工作(即Collections.sort(list, (a, b) -> a-b)
)。
但是在比较器接口中,compare
和equals
方法都是抽象的,这意味着它有两个抽象方法。那么,如果定义要求接口只有一个抽象方法,这怎么能起作用呢?这里我漏掉了什么?
https://stackoverflow.com/questions/14655913
复制相似问题