大家好,又见面了,我是你们的朋友全栈君。
Lambda 表达式,也可称为闭包,它是推动 Java 8 发布的最重要新特性。 Lambda 允许把函数作为一个方法的参数(函数作为参数传递进方法中)。 使用 Lambda 表达式可以使代码变的更加简洁紧凑。
标准格式:
(形式参数)->{代码块} Lambda表达式组成三要素:括号,箭头,代码块
Lambda表达式的代码分析
● (): 里面没有内容,可以看成是方法形式参数为空
● ->:用箭头指向后面要做的事情
● {
}: 包含一段代码,我们称之为代码块,可以看成是方法体中的内容
实例如下,用匿名内部类和Lambda表达式分别启动一个线程,相对于匿名内部类,我们会发现 Lambda 表达式更简洁
public class RunableDemo01 {
public static void main(String[] args) {
//匿名内部类的方式启动一个线程
new Thread(new Runnable() {
@Override
public void run() {
System.out.println(Thread.currentThread().getName()+"线程启动啦");
}
}).start();
//Lambda表达式的方式启动一个线程
new Thread(()-> System.out.println(Thread.currentThread().getName()+"线程启动啦")).start();
}
}
Lambda表达式使用前提:
实例一: Lambda表达式是 方法 在调用接口中抽象方法时 直接实现接口中的抽象方法(如下)
实例二 这个是抽象方法带参时Lambda表达式如何传参(如下)
实例三: Lambda表达式在一些情况下是可以省略简写的(如下) 接口:
package cnn.lambdaTest.Demo04;
public interface LamDemoImpl {
void fun(String s);
}
测试类:
public class LamDemo01 {
public static void main(String[] args) {
useFun((String s)->{
System.out.println(s);
});
//参数的类型可以省略
useFun((s)->{
System.out.println(s);});
//单个参数可以省略括号
useFun(s-> {
System.out.println(s);});
//代码块中单个语句可以省略大括号
useFun(s-> System.out.println(s));
}
private static void useFun(LamDemoImpl la) {
la.fun("如何省略呢");
}
}
省略的几种情况:
Lambda 表达式使用注意事项:
根据局部变量的赋值知Lambda对应的接口: Runnabler=() -> System.out.println("Lambda表达式");
根据调用方法的参数得知Lambda对应的接口: new Thread() -> System.out.printIn("Lambda表达式).start();
Lambda表达式与匿名内部类的区别可以看这个:传送门,有助于加深Lambda表达式的理解
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/156338.html原文链接:https://javaforall.cn