本帖最后由 小石姐姐 于 2019-5-23 16:36 编辑
.Lambda表达式
个人理解:
把一个编码过程尽量进行简化,但如果有了多条语句的时候,基本上能精简的特别少
启用线程例题是一个很好的例题
例[Java] 纯文本查看 复制代码 //方式一的线程类
public class MyRunnable implements Runnable {
@Override
public void run() {
System.out.println("多线程程序启动了");
}
}
public class LambdaDemo {
public static void main(String[] args) {
//方式一
// MyRunnable my = new MyRunnable();
// Thread t = new Thread(my);
// t.start();
//方式二
// new Thread(new Runnable() {
// @Override
// public void run() {
// System.out.println("多线程程序启动了");
// }
// }).start();
//方式三
new Thread( () -> {
System.out.println("多线程程序启动了");
} ).start();
}
}
但很多时候还是用的不是很习惯,用惯了以前的繁琐式编码,用上了这个表达式,总觉得是缺胳膊掉腿
(其实还是很好用的......)
Lambda表达式的标准格式【理解】
- 格式:
(形式参数) -> {代码块} - 形式参数:如果有多个参数,参数之间用逗号隔开;如果没有参数,留空即可
- ->:由英文中画线和大于符号组成,固定写法。代表指向动作
- 代码块:是我们具体要做的事情,也就是以前我们写的方法体内容
- 组成Lambda表达式的三要素:
- 形式参数,箭头,代码块
1.3Lambda表达式练习1[Java] 纯文本查看 复制代码 //接口[/size][/font][/color][/align]public interface Eatable {
void eat();
}
//实现类
public class EatableImpl implements Eatable {
@Override
public void eat() {
System.out.println("一天一苹果,医生远离我");
}
}
//测试类
public class EatableDemo {
public static void main(String[] args) {
//在主方法中调用useEatable方法
Eatable e = new EatableImpl();
useEatable(e);
//匿名内部类
useEatable(new Eatable() {
@Override
public void eat() {
System.out.println("一天一苹果,医生远离我");
}
});
//Lambda表达式
useEatable(() -> {
System.out.println("一天一苹果,医生远离我");
});
}
private static void useEatable(Eatable e) {
e.eat();
}
}
这次视频老师终于不拿林青霞举例子了,可是又跟苹果干上了..........
- Lambda表达式的使用前提
- 有一个接口
- 接口中有且仅有一个抽象方法
- 练习描述
无参无返回值抽象方法的练习 - 操作步骤
- 定义一个接口(Eatable),里面定义一个抽象方法:void eat();
- 定义一个测试类(EatableDemo),在测试类中提供两个方法
- 一个方法是:useEatable(Eatable e)
- 一个方法是主方法,在主方法中调用useEatable方法
总得来说.Lambda表达式在很大程度上简化了程序的书写过程,不过精简的太过头有时候自己都有些看不懂,初学的小伙伴还是最好掌握这种方法
|