Lambda是什么
在JDK 1.8 版本中新增了Lambda表达式
作用:简化匿名内部类
使用前提:必须是函数式接口
函数式接口:只有一个必须被重写的抽象方法的接口
强制检测是否为函数式接口,注解@FunctionalInterface
()->{}
() 匹配要重写的抽象方法的参数列表
-> Lambda符号箭头具有上下文推导的作用
{} 匹配要重写的抽象方法的方法体
匿名内部类
在讲解Lambda表达式之前先写一个匿名内部类的,好在接下来对它进行改写
public class Demo01 {
public static void main(String[] args) {
new MyInterface() {
Lambda表达式
用法1
首先对上面的匿名内部类使用Lambda表达式进行改写
public class Demo01 {
public static void main(String[] args) {
MyInterface m = () -> {
System.out.println("我是Lambda表达式");
};
m.mehtod();
}
}
用法2
方法体中如果方法语句只有一句,方法体前后的 {} 可以省略
public class Demo01 {
public static void main(String[] args) {
MyInterface m = () -> System.out.println("我是Lambda表达式");
m.mehtod();
}
}
用法3
如果有参数,参数的数据类型可以省略
箭头有上下文推导的作用,可以根据上下文,寻找到所需要的参数类型
public class Demo01 {
public static void main(String[] args) {
MyInterface m = (a,b) -> System.out.println("我是Lambda表达式"+a+b);
m.mehtod();
}
}
用法4
如果有参数且只有一个,前后的()可以省略
public class Demo01 {
public static void main(String[] args) {
MyInterface m = a -> System.out.println("我是Lambda表达式"+a);
m.mehtod();
}
}
用法5
如果语句体只有一句,并且还是return 语句, return关键字及前后的{}可以一起省略
public class Demo01 {
public static void main(String[] args) {
MyInterface m = () -> "我是Lambda表达式";
System.out.println(m.mehtod());
}
}