
函数式接口就是只包含一个抽象方法的接口。可以这样声明FunctionalInterface interface MultiplyNumbers { void multiply(int x, int y); }说明FunctionalInterface用于标记这是函数式接口编译器会检查是否只有一个抽象方法。multiply是抽象方法接收两个int参数。void表示该方法不返回值。之后可以用 Lambda 实现它MultiplyNumbers obj (x, y) - System.out.println(x * y);注意接口名称要完整写成MultiplyNumbers不要截断方法参数和类型也要与一致。egimport java.util.Scanner; FunctionalInterface interface MultiplyNumbers { void multiply(int x,int y); } class Main { public static void main(String[] args) { // implement the functional interface using lambda expressions MultiplyNumbers obj (x, y) - { System.out.println(x * y); }; Scanner input new Scanner(System.in); int input1 input.nextInt(); int input2 input.nextInt(); obj.multiply(input1, input2); } }QAQobj是接口名吗A不是。这里MultiplyNumbers obj (x, y) - { System.out.println(x * y); };MultiplyNumbers是接口类型obj是一个变量名表示该接口类型的对象引用(x, y) - {...}是 Lambda 表达式用来实现接口中的multiply(int x, int y)方法可以理解为MultiplyNumbers obj; obj (x, y) - System.out.println(x * y);之后通过obj调用接口方法obj.multiply(input1, input2);因为MultiplyNumbers是函数式接口所以可以直接用 Lambda 创建它的实现。