我在 Java 8 中遇到了一个新术语:“函数式接口”。在使用 lambda 表达式 时,我只能找到它的一种用途。
Java 8 提供了一些内置的功能接口,如果我们想定义任何功能接口,我们可以使用 @FunctionalInterface
注释。它将允许我们在接口中只声明一个方法。
例如:
@FunctionalInterface
interface MathOperation {
int operation(int a, int b);
}
除了使用 lambda 表达式 之外,它在 Java 8 中还有多大用处?
( 这里 的问题与我提出的问题不同。它问为什么我们在使用 lambda 表达式时需要函数式接口。我的问题是:除了使用 lambda 表达式之外,函数式接口的其他用途是什么?)
原文由 Madhusudan 发布,翻译遵循 CC BY-SA 4.0 许可协议
@FunctionalInterface
注释对于代码的编译时间检查很有用。 You cannot have more than one method besidesstatic
,default
and abstract methods that override methods inObject
in your@FunctionalInterface
or any other interface用作功能接口。但是您可以使用没有此注释的 lambda,也可以覆盖没有
@Override
注释的方法。来自文档
这 可以 在 lambda 表达式中使用:
这 不能 在 lambda 表达式中使用:
但这会产生 编译错误: