Lambda表达式的基本使用
Lambda表达式是一个匿名函数,就是一个没有方法名的方法。我们今天要讨论的问题是,这种匿名方式如何使用,使用在什么地方。
一、使用Lambda表达式的格式
(参数列表)->{方法体};
(参数列表):代表匿名方法中,改方法中可以传递参数。
->:代表指向,将参数列表中的参数,指向到方法体中。在方法体中就可以使用到这些参数了。
{方法体}:用来实现功能的代码块。
二、使用Lambda表达式的前提
1. 必须是接口,而且该接口中抽象方法只能有一个。
2. 可推导,可省略。
三、Lambda表达式的使用时机
其实很简单,当我们去调用一个方法,如果该方法参数中有接口类型的数据,而且该接口中抽象方法只有一个的时
候,就可以使用Lambda表达式了。而我们使用的Lambda表达式就可以认为是该接口的”匿名内部类对象”。该接
口中如果有参数我们就写,如果没有我们也不写
四、java代码实现
假如我们现在想使用Runnable接口实现一个线程。就要先定义一个Runnable接口的实现类,然后才能实现。
我们有更加简洁的方式,使用匿名内部类:
//定义MyRunnable实现Runnable接口
public class MyRunnable implements Runnable {
@Override
public void run() {
System.out.println("我要创建一个线程");
}
} /
/测试类
public class Test {
public static void main(String[] args) {
MyRunnable mr = new MyRunnable();
new Thread(mr).start();
}
}
无论我们使用什么的方式,就必须要先去实现Runnable接口,然后在重写run()方法,才能实现。但是我们的目的
只是为了去执行线程中的代码,而又不得不去做这样的事情,显得比较麻烦。但是使用Lambda表达式就可以简化
这些的操作,因为Lambda表达式只是在强调结果,而不再强调怎么去做。
这样就使代码变得更加简洁,目的性更加明确了。就是为了创建线程.,接下来我们来分析一下代码的含义: Thread
对象是为了创建创建并开启线程使用的。他的构造中需要一个Runnable的实现类对象,而我们线程是用Lambda表
达式来替代了。其中()就代表了Runnable接口中的方法,由于该方法中没有参数,所有我们也不用写参数。{}中就
是具体实现的代码。
[AppleScript] 纯文本查看 复制代码 //测试类
public class Test {
public static void main(String[] args) {
//使用匿名内部类对象作为参数
new Thread(new Runnable() {
@Override
public void run() {
System.out.println("我要创建一个线程");
}
}).start();
}
} /
/测试类
public class Test01 {
public static void main(String[] args) {
//使用Lambda表达式
new Thread(()‐>{System.out.println("我要创建一个线程");});
}
}
|