猿问

Java 8中函数接口的用途是什么?

Java 8中函数接口的用途是什么?

我遇到了一个新名词功能接口在Java 8中。

在使用时,我只能找到这个接口的一种用法。Lambda表达式.

Java 8提供了一些内置的函数接口,如果我们想定义任何函数接口,那么我们可以使用@FunctionalInterface注释它将允许我们在接口中只声明一个方法。

例如:

@FunctionalInterfaceinterface MathOperation {
    int operation(int a, int b);}

它在Java 8中有多有用,而不仅仅是使用Lambda表达式?

问题这里和我问的不一样。它在问为什么我们需要功能接口在使用Lambda表达式时。我的问题是:为什么要用功能接口除了直接与Lambda表达式?


开心每一天1111
浏览 846回答 3
3回答

慕神8447489

@FunctionalInterface注释对于代码的编译时间检查非常有用。除了一种方法之外,您不能有更多的方法。static, default中覆盖方法的抽象方法。Object在你的@FunctionalInterface或任何其他用作功能接口的接口。但是,您可以在没有此注释的情况下使用lambda,也可以在没有此注释的情况下重写方法。@Override注释从医生那里一个功能接口正好有一个抽象方法。因为默认方法有实现,所以它们不是抽象的。如果接口声明了一个覆盖java.lang.Object的公共方法的抽象方法,那也不算在接口的抽象方法计数中,因为接口的任何实现都将有来自java.lang.Object或其他地方的实现。这,这个可以使用在lambda表达式中:public interface Foo {   public void doSomething();}这,这个不能使用在lambda表达式中:public interface Foo {   public void doSomething();   public void doSomethingElse();}但这会给编译错误:@FunctionalInterfacepublic interface Foo {   public void doSomething();   public void doSomethingElse();}无效的@FunctionalInterface注释;foo不是函数接口

阿波罗的战车

这个文献资料确实在目标之间起了很大的作用一种信息丰富的注释类型,用于指示接口类型声明的意图是功能接口由Java语言规范定义。和用例注意,函数接口的实例可以使用lambda表达式、方法引用或构造函数引用创建。其措辞并不排除一般的其他用例。因为主要目的是表示功能接口,你的实际问题归结为“是否有其他用例用于功能接口除了lambda表达式和方法/构造函数引用之外?“自功能接口是Java语言规范定义的Java语言结构,只有该规范才能回答这个问题:JLS第9.8节。功能接口:…除了通过声明和实例化类来创建接口实例的通常过程(§15.9)之外,还可以使用方法引用表达式和lambda表达式创建函数接口实例(§15.13,§15.27)。因此,Java语言规范没有这样说,该部分中提到的唯一用例是使用方法引用表达式和lambda表达式创建接口实例。(这包括构造函数引用,因为它们是规范中方法引用表达式的一种形式)。所以在一个句子中,不,在Java 8中没有其他的用例。
随时随地看视频慕课网APP

相关分类

Java
我要回答