Java中的功能接口是什么?

只有一种抽象方法的接口称为功能接口。可以添加@FunctionalInterface 批注,以便我们可以将接口标记为功能接口。Java编译器会自动识别功能接口。

lambda表达式主要用于定义功能接口的 内联实现。它消除了对匿名类的需求,并为Java提供了简单而强大的功能编程能力。

几乎没有Java默认接口是下面列出的功能接口

  • java.lang.Runnable

  • java.util.concurrent.Callable

  • java.io.FileFilter

  • java.util.Comparator

  • java.beans.PropertyChangeListener

语法

@FunctionalInterface
interface interface-name {
 // only one abstract method
}

示例

@FunctionalInterfaceinterface MathOperation {
   int operation(int a, int b);
}
public class LambdaExpressionTest {
   public static void main(String args[]) {
      MathOperation addition = (a, b) -> a + b;  // lambda expression
      MathOperation multiplication = (int a, int b) -> { return a * b; };  // lambda expression
      System.out.println("The addition of two numbers are: " + addition.operation(5, 5));
      System.out.println("The multiplication of two numbers are: " + multiplication.operation(5, 5));
   }
}

输出结果

The addition of two numbers are: 10
The multiplication of two numbers are:: 25