函数式接口定义
java 8引入了函数式接口的概念,,也称 SAM 接口,即 Single Abstract Method interfaces,有且只有一个抽象方法,但可以有多个非抽象方法的接口。函数式接口可以使用Lambda表达式来创建该接口的对象,从而简化了代码。函数式接口可以包含默认方法、静态方法和Object类的方法(例如 equals()
和 hashCode()
),但只能包含一个抽象方法。如果一个接口声明了 @FunctionalInterface
注解,但其内部包含多于一个抽象方法,则编译器会产生一个错误。
在 java 8 中专门有一个包放函数式接口java.util.function
,该包下的所有接口都有 @FunctionalInterface
注解,提供函数式编程。
在其他包中也有函数式接口,其中一些没有@FunctionalInterface
注解,但是只要符合函数式接口的定义就是函数式接口,与是否有@FunctionalInterface
注解无关,注解只是在编译时起到强制规范定义的作用。其在 Lambda 表达式中有广泛的应用。
函数式接口代码实战
以下是一个简单的实例,演示了如何在Java 8中使用函数式接口:
// 定义一个函数式接口
@FunctionalInterface
interface MathOperation {
int operate(int a, int b);
}
public class Main {
publi