当前位置: 首页 > 知识库问答 >
问题:

comparator是如何作为一个功能接口的?[副本]

索正豪
2023-03-14
int compare(T o1, T o2);

boolean equals(Object obj);

其他的是默认的和静态的。

JavaDocs将其称为函数接口。怎么可能呢?

共有1个答案

淳于亦
2023-03-14

你读错了定义,或者至少是一个(过于)简化的定义。

FunctionalInterface的正确定义是:

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

 类似资料:
  • 我正在学习这个函数接口科目,我研究如何使用预定义的函数接口:谓词和函数。 所以我创建了几个实现: 这与简单地调用一个常规函数来完成这些任务有何不同? 是为了让lambdas使用它们吗?是否允许将它们作为方法参数传递? 我真的错过了这个技术的真正道理。

  • 问题内容: 在Java 8中,只有一个抽象方法的抽象类不是功能接口(JSR 335 )。 这是一个功能接口: 但这不是: 因此,我不能将抽象类用作lambda表达式和方法引用的目标。 编译错误为:。 语言设计者为什么要施加此限制? 问题答案: 自Lambda项目成立以来,这一直是一个重要的话题,并且引起了很多思考。Java语言首席架构师Brian Goetz强烈支持将lambda视为 功能 而非

  • 在java 8中,只有一个抽象方法的抽象类不是函数接口(JSR 335)。 这个是一个功能接口: 但这个抽象类不是: 因此,我不能将抽象类用作lambda表达式和方法引用的目标。 编译错误为:。 为什么语言设计者会施加这种限制?

  • 主要内容:1 什么是Java Comparator接口,2 Java Comparator接口的方法,3 Java Comparator接口的例子1 什么是Java Comparator接口 Java Comparator接口用于对用户定义的类的对象进行排序。 该接口在java.util包下,包含2个方法compare(Object obj1,Object obj2)和equals(Object element)。 它提供了多种排序顺序,意味着,您可以根据任何数据成员(例如,编号,名称,年龄或其

  • 在编写了自己的通用功能接口并将其用于lambdas之后,我必须在一种新方法中使用它: 将通用数组作为输入处理,检查其最小长度是否为4 处理我的功能界面的任何实例 处理lambda表达式的任何实例,该表达式接受一个参数,但不返回任何内容 应用于函数接口实例的结果(这里我想我必须使用使用者) 以前从未使用过函数接口,有人能解释一下我应该如何将2个函数接口作为方法参数传递吗? 例如:

  • 我不知道如何正确使用比较器接口。 注意:我不想使用我在大多数代码中看到的“一行”比较器实现,这意味着: 再说一遍,我不想使用这个,因为我将对许多不同的ArrayList进行排序,每次这样做似乎都是浪费空间。我想以某种方式让它工作,让我的compareTo方法在一个地方编写一次。 我尝试了许多不同的方法,但我对实现接口还不熟悉,所以我可能遗漏了一些东西。 这是我的Card类和它的比较方法。(注意:让