首页 > 解决方案 > 比较器如何功能接口?

问题描述

根据功能接口的定义 -功能接口是只包含一个抽象方法的接口。

但是Comparator<T>有两个抽象方法:

int compare(T o1, T o2);

boolean equals(Object obj);

其他是默认的和静态的。

JavaDocs 将其称为功能接口。怎么会这样?

标签: javaoopfunctional-interface

解决方案


您正在阅读错误的定义,或者至少是(过度)简化的定义。

FunctionalInterface 的正确定义是:

函数式接口是只有一个抽象方法(除了 Object 的方法)的接口,因此代表一个单一的函数契约。这种“单一”方法可以采用多个抽象方法的形式,这些方法具有从超接口继承的重写等效签名;在这种情况下,继承的方法在逻辑上代表一个方法。

来源:Java 语言规范第 9.8 节


推荐阅读