package four;
//定义无参、无返回值的函数式接口
@FunctionalInterface
interface Animals6{
void shout();
}
//定义有参、有返回值的函数式接口
interface Sum{
int sum(int a,int b);
}
public class Test06_Lambda {
public static void main(String [] args) {
//测试两个函数式接口
animalsshout(()->System.out.println("无参无返回值的函数式接口调用"));
//等效于以下代码
animalsshout(new Animals6() {
public void shout(){
System.out.println("无参无返回值的函数式接口调用");
}
});
showSum(10,20,(x,y)->x+y);
//等效于以下代码
showSum(10,20,new Sum() {
public int sum(int a,int b) {
return a+b;
}
});
}
//创建一个shout()方法,传入接口对象Animals6作为参数
private static void animalsshout(Animals6 animals) {
animals.shout();
}
//创建一个求和方法,传入两个int类型以及接口Sum类型的参数
private static void showSum(int x,int y ,Sum sum) {
System.out.println(x+"+"+y+"的和为:"+sum.sum(x, y));
}
}
注意:
1.Lambda表达式是基于函数式接口实现的,函数式接口是指有且仅有一个抽象方法的接口;
2.Lambda表达式是接口的简化,可以使代码体简洁,->后面表示表达式主体,例如代码:
new Animals6() {
public void shout(){
System.out.println("无参无返回值的函数式接口调用");
}
}
可用Lambda表达式
()->System.out.println("无参无返回值的函数式接口调用")
替代,->后面的"System.out.println("无参无返回值的函数式接口调用")"可以理解为补充了方法shout();
希望对你有所帮助,欢迎订阅我的博客!