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

Java8中的函数接口是用来做什么的?

劳华灿
2023-03-14
@FunctionalInterface
interface MathOperation {
    int operation(int a, int b);
}

(这里的问题和我问的不一样,是问为什么我们在使用lambda表达式的同时需要函数接口,我的问题是:除了使用lambda表达式之外,函数接口还有哪些其他用途?)

共有1个答案

楚煜
2023-03-14

@functionalinterface注释对于代码的编译时检查很有用。在@functionalinterface或用作函数接口的任何其他接口中,除了staticdefault和抽象方法之外,不能有多个方法覆盖object中的方法。

但是您可以使用lambdas而不使用此批注,也可以重写方法而不使用@override批注。

来自文档

这可以用在lambda表达式中:

public interface Foo {
  public void doSomething();
}

这不能在lambda表达式中使用:

public interface Foo {
  public void doSomething();
  public void doSomethingElse();
}

但这将导致编译错误:

@FunctionalInterface
public interface Foo {
  public void doSomething();
  public void doSomethingElse();
}
 类似资料:
  • 我目前正在读O'reilly的《Java 8 Lambdas》是一本非常好的书。我遇到了这样一个例子。 我有一个 这会产生正确的输出。 我的问题是将reduce方法视为最后一个参数,即二进制运算符 我的问题是这个参数用于哪个?如果我改变 如果我传递NULL,则输出相同,然后返回N.P.E。 for此参数用于什么? 更新 为什么如果我在上运行它,我会收到不同的结果? 第一次运行。 第二次运行 第三次

  • 主要内容:1 Java8 函数式接口的介绍,2 Java8 函数式接口的案例1,3 Java8 函数式接口的案例2,4 Java8 函数式接口的错误示范,5 Java8 函数式接口的案例3,6 Java8 预定义函数式接口1 Java8 函数式接口的介绍 完全包含一种抽象方法的接口称为函数式接口。函数式接口可以具有任意数量的默认静态方法,但只能包含一个抽象方法。函数式接口还可以声明对象类的方法。 函数式接口也称为单一抽象方法接口或SAM接口。它是Java8 中的新功能,有助于实现函数编程方法。

  • 这个函数是做什么的? 我在哪里可以找到关于它的文档?

  • 问题内容: 该参数对和有什么用?例如,给定以下代码,的作用是什么? 问题答案: 该属性指定从模型回到模型的反向关系的名称。 如果不指定,Django会自动使用带有后缀的型号的名称创建一个,例如。 如果确实在模型上指定,则仍然可以使用,但是User.maps.语法显然更简洁,更简洁。因此,例如,如果你有一个用户对象,则可以用来获取Map模型中与关联的所有实例。 该Django文档有更多的细节。

  • 但是为什么一个函数接口应该只有一个抽象方法呢?如果接口有多个抽象方法,为什么这不是函数接口?

  • 问题内容: 该参数对和有什么用?例如,给定以下代码,的作用是什么? 问题答案: 该属性指定从模型回到模型的反向关系的名称。 如果不指定,Django会自动使用带有后缀的型号的名称创建一个,例如。 如果确实在模型上指定,则仍然可以使用,但是.语法显然更简洁,更简洁。因此,例如,如果你有一个用户对象,则可以用来获取Map模型中与关联的所有实例。