@FunctionalInterface 是Java 8引入的一个注解,用于标记接口是否为函数式接口。函数式接口是指只包含一个抽象方法的接口。该注解可以确保接口符合函数式编程的要求,并且可以提供编译时的错误提示。
总结:
- 使用 @FunctionalInterface 注解可以帮助我们明确表达接口的意图,即该接口用于函数式编程。
- @FunctionalInterface 注解可以确保接口只有一个抽象方法,否则在编译时会报错。
- 如果接口只有一个抽象方法,但没有使用 @FunctionalInterface 注解,也符合函数式接口的定义,但编译时不会进行特殊处理。
例子:
@FunctionalInterface
interface MathOperation {
int operate(int a, int b);
}
class Calculator {
public int calculate(int a, int b, MathOperation mathOperation) {
return mathOperation.operate(a, b);
}
}
public class Main {
public static void main(String[] args) {
Calculator calculator = new Calculator();
MathOperation addition = (a, b) -> a + b;
System.out.println("Addition: " + calculator.calculate(5, 3, addition));
MathOperation subtraction = (a, b) -> a - b;
System.out.println("Subtraction: " + calculator.calculate(5, 3, subtraction));
MathOperation multiplication = (a, b) -> a * b;
System.out.println("Multiplication: " + calculator.calculate(5, 3, multiplication));
}
}
在上面的例子中,我们定义了一个函数式接口 MathOperation
,它只有一个抽象方法 operate
。我们使用了 @FunctionalInterface 注解来明确表示该接口是函数式接口。
然后我们定义了一个 Calculator 类,它有一个 calculate 方法,接受两个整数和一个 MathOperation 接口的实例作为参数,并调用其 operate
方法来进行计算。
在主方法中,我们创建了三个 MathOperation 的实例,分别表示加法、减法和乘法运算。然后使用 Calculator 类的 calculate 方法进行计算,并输出结果。
这个例子展示了如何使用 @FunctionalInterface 注解来定义函数式接口,并在实际代码中使用该接口进行函数式编程。