Lamda表达式
-
避免匿名内部类定义过多;使得代码简洁
-
其实质属于函数式编程的概念
(params)->expression[表达式]
(params)->statement[语句]
(params)->{statements}
函数式接口
- 任何接口,如果只包含一个抽象方法,那么它就是一个函数式接口。比如Runnable就是一个函数式接口。
- 对于函数式接口,我们可以通过lambda表达式来创建该接口的对象
Lambda表达式推导
外部类——>静态内部类——>局部内部类——>匿名内部类——>Lambda表达式
-
外部类
public class lambdaDemo { public static void main(String[] args) { Lambda test = new Test(); test.run(); } } //定义一个函数式接口:只有一个抽象方法 interface Lambda{ void run(); } //外部类 class Test implements Lambda{ @Override public void run() { System.out.println("普通方法"); } }
-
静态内部类
public class lambdaDemo { //静态内部类 static class Test implements Lambda{ @Override public void run() { System.out.println("静态内部类"); } } public static void main(String[] args) { Lambda test = new Test(); test.run(); } } //定义一个函数式接口:只有一个抽象方法 interface Lambda{ void run(); }
-
局部内部类:在方法里
public class lambdaDemo { public static void main(String[] args) { //局部内部类 class Test implements Lambda{ @Override public void run() { System.out.println("局部内部类"); } } Lambda test = new Test(); test.run(); } } //定义一个函数式接口:只有一个抽象方法 interface Lambda{ void run(); }
-
匿名内部类
public class lambdaDemo { public static void main(String[] args) { //匿名内部类 Lambda test = new Lambda() { @Override public void run() { System.out.println("匿名内部类"); } }; test.run(); } } //定义一个函数式接口:只有一个抽象方法 interface Lambda{ void run(); }
-
Lambda表达式
public class lambdaDemo { public static void main(String[] args) { //Lambda表达式 Lambda test = ()->{ System.out.println("Lambda表达式"); }; test.run(); } } //定义一个函数式接口:只有一个抽象方法 interface Lambda{ void run(); }
注意:方法里只有一条语句,可以简化花括号
public class lambdaDemo { public static void main(String[] args) { //Lambda表达式 Lambda test = ()-> System.out.println("Lambda表达式"); test.run(); } } //定义一个函数式接口:只有一个抽象方法 interface Lambda{ void run(); }
Lambda简化规则
- 可以简化参数类型
- 如果只有一个参数,可以去掉()
- 如果只有一条语句,可以去掉{}
使用Lambda表达式创建多线程
public class lambdaDemo {
public static void main(String[] args) {
//匿名内部类+Lambda
new Thread(()-> System.out.println("线程开启")).start();
}
}
标签:Lamda,run,void,test,public,表达式,Lambda
From: https://www.cnblogs.com/xiluoluo/p/16861244.html