什么是函数式接口参考两处的定义,试着回答什么是函数式接口AnInterfacethatcontainsexactlyanabstractmethodisknown作为功??能接口。它可以有任意数量的默认静态方法,但只能包含一个抽象方法。它还可以声明对象类的方法。功能接口也称为单一抽象方法接口或SAM接口。它是Java中的一项新功能,有助于实现函数式编程方法。以上是javapoint)网站的定义。总结以下几点,抽象函数接口只能有一个,可以有任意多个默认静态方法。可以有Object类声明的方法。,因为所有的类都是Object的子类用于指示接口类型声明旨在成为Java语言规范定义的功能接口的信息注释类型。从概念上讲,功能接口只有一个抽象方法。由于默认方法有一个实现,它们不是抽象的。如果一个接口声明了一个抽象方法来覆盖java.lang.Object的公共方法之一,那么也不计入接口的抽象方法计数,因为接口的任何实现都将具有来自java.lang.Object或其他地方的实现。请注意,可以使用lambda表达式、方法引用或构造函数引用来创建函数式接口的实例。如果使用此注解类型对类型进行注解,则需要编译器生成错误消息,除非:该类型是接口类型而不是注解类型、枚举或类。注释类型满足功能接口的要求。但是,无论接口声明中是否存在FunctionalInterface注释,编译器都会将满足功能接口定义的任何接口视为功能接口。我们再看一下FunctionalInterface中的javadoc。最大的区别是同一个意思,但还是可以概括功能接口的实例可以用lambdas来表示。带有此类注解的方法引用或构造函数引用表明这是一个接口,而不是注解。枚举或类功能接口不需要此注释,但是如果不是带有这个注解的函数式接口,编译器就会报错。如果在网上搜索一个函数式界面,可以找到很多知识,所以现在写这篇文章是在重复同样的事情吗?其实网上很多文章都是讲java常用的函数式接口的。一样的,而且这么笼统,完全不是那种适合初学者的文章,至少我看不懂。就这样,我觉得我可以把我对函数式接口的理解写下来,接下来我就从自定义函数式接口说起。我想表达的很简单,就是自定义一个IAnimal的接口,它只有一个抽象方法talk()。两个具体的实现类实现了这个方法。还有main方法调用talk()。IAnimal.javaCat.javaDog.javaMain.java但有时你不想创建一个新类。比如接口比较简单,实现也不复杂。创建一个新类可能是多余的。这时候有些同学就会想到使用匿名内部类。说到匿名内部类,就意味着可以用lambda表达式来再次简化。简化之后的IAnimal已经是函数式接口了,整个例子都是自定义的函数式接口,所以可以发现它的本质还是一个接口。只是实现类从一个完整的类变成了一个函数。java中常用的函数式接口上面是一个简单的自定义函数式接口的例子。接下来我们看看jdk自己声明的四大函数式接口。功能接口参数类型返回类型目的主要方法Consumer\
