匿名内部类的好处是可以省略创建.java文件的操作
匿名内部类也有缺点, 他的缺点是语法复杂, 写法也非常冗余。
匿名内部类中最关键的内容是方法参数, 方法体, 返回值。
所以最好的方式是只关注这核心的三个内容。
lambda表达式就是只关注着三个内容
Lambda表达式的标准格式:
(参数类型 参数名) -> {
方法体;
返回值;
}
注意:
1. 小括号里面可以写多个参数,多个参数之间用逗号隔开。
2. ->是一个运算符,表示指向性动作。
3. 大括号中要写方法体和返回值, 和之前传统方法的写法基本一致。
Lambda表达式可以省略面向对象中条条框框,让我们只关注最核心的内容。
函数式编程思想: 可推导,就是可省略。
因为Thread构造方法中要传递一个Runnable接口类型的参数,所以能够推导出来参数类型, 所以可以省略new Runnable
因为实现接口的时候要重写接口中的抽象方法, 重写之后的方法修饰符 返回值类型 方法名要和父类一致,所以我们可以省略要重写的方法的修饰符 返回值类型这些内容。
Lambda表达式是匿名内部类的简化写法
public class Demo02Inner {
public static void main(String[] args) {
//创建Runnable接口的实现类对象
MyTask myTask = new MyTask();
new Thread(myTask).start();
//使用匿名内部类实现
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();
}
}
public class MyTask implements Runnable{
@Override
public void run() {
System.out.println(Thread.currentThread().getName() + “执行了”);
}
}