java - 你有 Java 8 功能接口(interface)列表吗(不是 java.util.function 中列出的那些)?

标签 java java-8 functional-interface

我正在尝试查看是否有任何方法可以获取 Java 8 中作为函数式接口(interface)的所有接口(interface)的列表。我不是在谈论此页面上的列表:

https://docs.oracle.com/javase/8/docs/api/java/util/function/package-summary.html

相反,我说的是 Comparator、FileFilter 和 Runnable 等接口(interface) - API 文档显示的接口(interface)功能如下:

@FunctionalInterface 公共(public)接口(interface)可运行

哪里有这些的完整列表?

谢谢!

最佳答案

当您浏览到 FunctionalInterface’s class documentation 时,API 文档中会列出所有用 @FunctionalInterface 注释的接口(interface)。然后点击 USE顶部的链接。

但必须强调的是,注解的存在是not mandatory to make an interface a functional interface .每个接口(interface)只有一个 abstract 方法不匹配 java.lang.Objectpublic 方法可以通过 lambda 表达式或方法引用来实现,尽管这并不一定意味着结果将满足为特定 interface 指定的附加契约(Contract)。

roughly 200 interfaces in the JRE fulfilling the technical constraints ,因此当您尝试通过 lambda 表达式实现它们时,编译器不会反对。其中只有少数有注释。一些没有注释的人仍然可以顺利工作,例如ActionListenerInvocationHandlerThreadFactory,而其他的由于额外的限制而不适用,例如 ComparableProtocolFamily FlavorException。这也在“Why isn't @FunctionalInterface used on all the interfaces in the JDK that qualify?”中进行了讨论。 ”

因此,虽然 @FunctionalInterface 记录了可用作 lambda 表达式或方法引用的目标类型的意图,但其他接口(interface)类型可能仍适用于相同目的,但您必须调查契约自己判断使用是否合适。

关于java - 你有 Java 8 功能接口(interface)列表吗(不是 java.util.function 中列出的那些)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42942351/

相关文章:

基于 Java 文本的应用程序

java - 术语 : What do you call a function that does not change object state?

java - DynamoDB POJO 是否需要实现序列化?

java - 如何使用 lambda 表达式将条件发送到方法以便尚未对其进行评估?

java - 识别内置功能接口(interface)

Java 8 流,为什么要编译第 2 部分……或者什么是方法引用,真的吗?

java - Spring Boot : How to Disable JNDI lookup and use spring. 数据源代替测试?

java - Java 8 流是原子的吗?

java - 扩展最终类或替换它

java - 'Comparable<T>' 应该是 'Functional interface' 吗?