Lambda表达式
* 匿名内部类:为了防止过多 没有本身作用的类出现,就只是为了重写一些抽象方法,可以定义为匿名内部类
* Lambda表达式 : 可以简化匿名内部类
* 前提: 函数式接口
* 函数式接口: 只有一个抽象方法的接口
* 强制检查函数式接口: @FunctionalInterface
*
* 语法:
* () -> {}
* () : 匹配要重写的抽象方法的参数列表
* -> : lambda符号,箭头符号,具有上下文推到的作用
* {} : 匹配要重写的抽象方法的方法体
public class LambdaDemo01 {
public static void main(String[] args) {
//匿名内部类:有些实现类,没有自己本身的作用,就是为了重写抽象方法,浪费类名, 我们可以使用匿名内部类
//普通的匿名内部类,可以省去一个类名(这个类只是为了实现接口,没有其他意义) 实现方法:
String y = new ABC({
@Override
public String haha(int a, int b) {
System.out.println(a+b);
return ""+a+b;
}
}).haha(5, 6);
System.out.println(y);
/*
*运用Lambda表达式:只能运用于函数式接口,也就是: 必须是接口,接口中只能有一个抽象方法
*方法是 惟一的抽象方法的(参数列表)->{语句体};
*优化:
*参数列表中的数据类型声明可以省去,只写变量
*语句体中只有一句return ,可以将return 省略 (注意原来接口式函数是有返回值类型的)
*如果参数只有一个或者语句体只有一个 可以省去()或者{}
*/
ABC x = (a,b)->a+b+"重写的语句体";
System.out.println(x.haha(6,20));
}
}
interface ABC{
String haha(int a,int b);
}