Java中函数式接口的规则是什么?

函数式接口是一种特殊的接口,具有一种抽象方法,其中lambda表达式参数和返回类型是匹配的。 它为lambda表达式和方法引用提供了目标类型。

函数式接口的规则:

  • 函数式接口必须仅具有一种抽象方法

  • 一个函数式接口具有任意数量的默认方法,因为它们不是抽象的,并且已经由同一接口提供了实现。

  • 函数接口声明了一个抽象方法,该方法覆盖了java.lang.Object中仍被视为函数接口的公共方法之一。 原因是此接口的任何实现类都可以从超类或由实现类本身定义此抽象方法的实现。

语法

@FunctionalInterface
interface <interface-name> {
   //只有一种抽象方法
   //静态或默认方法
}

示例

import java.util.Date;@FunctionalInterfaceinterface DateFunction {
   int process();
   static Date now() {
      return new Date();
   }
   default String formatDate(Date date) {
      return date.toString();
   }
   default int sum(int a, int b) {
      return a + b;
   }
}
public class LambdaFunctionalInterfaceTest {
   public static void main(String[] args) {
      DateFunction dateFunc = () -> 77;      // lambda 表达式
      System.out.println(dateFunc.process());
   }
}

输出结果

77