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

Java8中“功能接口”的精确定义

汪胡非
2023-03-14

更准确地说,函数接口定义为具有一个抽象方法的任何接口。

然后他继续介绍示例,其中一个是comparator接口:

public interface Comparator<T> {
    int compare(T o1, T o2);
    boolean equals(Object obj);
} 

我能够测试是否可以使用lambda函数代替比较器参数,并且它能够工作(例如collections.sort(list,(a,b)->a-b))。

共有1个答案

方兴旺
2023-03-14

从您链接到的同一页面:

接口比较器是功能性的,因为尽管它声明了两个抽象方法,但其中一个--相等--具有与Object中的公共方法相对应的签名。接口总是声明与Object的公共方法相对应的抽象方法,但它们通常隐式地这样做。无论隐式还是显式声明,此类方法都将从计数中排除。

我真的说不出更好的了。

 类似资料:
  • 问题内容: 关于Java8 内置 功能接口,我遇到了许多问题,包括this,this和this。但是所有人都问“为什么只有一种方法?” 或“如果使用功能接口执行X,为什么会出现编译错误”等。我的问题是: 当我仍然可以在自己的接口中使用lambda时,这些新功能接口的存在目的 是 什么 ? 考虑一下oracle文档中的以下示例代码: 好的,很好,但这可以通过上面自己的示例来实现(带有单个方法的接口已

  • 还是这些标准的功能接口(消费者、供应商、谓词、函数)是用来充当代码组织、可读性、结构、[其他]的模板?

  • 更准确地说,函数接口被定义为恰好具有一个抽象方法的任何接口。 然后,他继续举例,其中一个是接口: 我能够测试我可以使用lambda函数来代替比较器参数,并且它可以工作(即)。 但是在比较器接口中,和方法都是抽象的,这意味着它有两个抽象方法。那么,如果定义要求接口只有一个抽象方法,那么这怎么能起作用呢?我错过了什么?

  • 在Java8中,新的包是Java。util。函数包含很多函数接口。该软件包的文档(http://docs.oracle.com/javase/8/docs/api/java/util/function/package-summary.html)多次提到“函数形状”: 有几种基本函数形状,包括函数(从T到R的一元函数)、消费者(从T到void的一元函数)、谓词(从T到布尔的一元函数)和供应者(从T到

  • 问题内容: Java 8中功能接口的定义说: 功能性接口被定义为具有任何接口恰好 一个明确声明的抽象方法。(由于接口可能具有非抽象的默认方法,因此必须进行限定。)这就是为什么功能接口以前称为“单一抽象 方法(SAM)”接口的原因,该术语有时仍然可见。 那么我们为什么这样: 作为中的sort方法List是: lambda表达式表示: Lambda表达式应可分配给功能接口 该Comparator接口有