目录
- 简介
- 用法前提和语法
- 作用
- 例子
- 推导lambda表达式(内部类的简化过程)
- 带参数的情况以及lambda表达式的简化:
简介
- Lambda 表达式,也可称为闭包,它是推动 Java 8 发布的最重要新特性。
- Lambda 允许把函数作为一个方法的参数(函数作为参数传递进方法中)。
用法前提和语法
- 用法前提:
如果一个接口只存在一个方法且是抽象类方法,那这个接口为函数式接口。对于函数式接口,可以使用lambda表达式来创建该接口的对象。
- 语法格式如下:
(parameters) -> expression
或
(parameters) ->{ statements; }
作用
- 可以使代码变的更加简洁紧凑。
- 避免匿名内部类定义过多
例子
推导lambda表达式(内部类的简化过程)
// 推导lambda表达式
public class LambdaDemo {// 3.静态内部类static class Like2 implements ILike {@Overridepublic void lambda() {System.out.println("I like lambda2");}}public static void main(String[] args) {ILike like = new Like();like.lambda();like = new Like2();like.lambda();// 4.局部内部类class Like3 implements ILike {@Overridepublic void lambda() {System.out.println("I like lambda3");}}like = new Like3();like.lambda();// 5.匿名内部类:没有类的名称,必须借助接口或者父类like = new ILike() {@Overridepublic void lambda() {System.out.println("I like lambda4");}};like.lambda();// 6.用lambda简化like = ()->{System.out.println("I like lambda5");};like.lambda();}
}// 1.定义一个函数式接口
interface ILike{void lambda();
}// 2.实现类
class Like implements ILike{@Overridepublic void lambda() {System.out.println("I like lambda");}
}
带参数的情况以及lambda表达式的简化:
public class LambdaDemo2 {public static void main(String[] args) {// 匿名内部类ILove love = new ILove() {@Overridepublic void love(int a,int b) {System.out.println("I love you:" + a);}};// 匿名内部类变成lambda表达式形式love = (int a,int b)->{System.out.println("I love you:" + a);};// 简化1:去掉参数类型
//(多个参数也能去掉参数类型,要去掉就全去掉)love = (a, b)->{System.out.println("I love you:" + a);};// 简化2:去掉括号(多个参数的情况不能去掉括号,只有一个参数的情况就可以)
// love = a ->{
// System.out.println("I love you:" + a);
// };// 简化3:去掉花括号(只有一行代码的情况下才能去掉花括号,多行代码要用代码块)love = (a, b) -> System.out.println("I love you:" + a);love.love(520,502);}
}interface ILove{void love(int a,int b);
}//class Love implements ILove{
// @Override
// public void love(int a,int b) {
// System.out.println("I love you:"+a);
// }
//}