函数式接口(Functional Interface)就是一个有且仅有一个抽象方法,但是可以有多个非抽象方法的接口。
函数式接口可以被隐式转换为 lambda 表达式。
package com.it.test;
public class Lambda2 {
public static void main(String[] args) {
Lambda2 lambda2 = new Lambda2();
//类型声明
MathOperation addition = (int a,int b) -> a+b;
//不用类型声明
MathOperation subtraction = (a,b) -> a-b;
//大括号中的返回值语句
MathOperation multiplication = (int a,int b) -> {return a*b;};
//没有大括号及返回语句
MathOperation division = (int a,int b) -> a/b;
System.out.println("10+5=" + lambda2.operate(10,5,addition));
System.out.println("10-5=" + lambda2.operate(10,5,subtraction));
System.out.println("10*5=" + lambda2.operate(10,5,multiplication));
System.out.println("10/5=" + lambda2.operate(10,5,division));
//不用括号
GreetingService greetingService1 = message ->
System.out.println("Hello" +message);
//用括号
GreetingService greetingService2 = (message) ->
System.out.println("Hello" +message);
greetingService1.sayMessage("Runoob");
greetingService2.sayMessage("Google");
}
interface MathOperation{
int operation(int a,int b);
}
interface GreetingService{
void sayMessage(String message);
}
private int operate(int a,int b,MathOperation mathOperation){
return mathOperation.operation(a,b);
}
}