原语句代码
powershell
public class Test {
public static void main(String[] args) {
new Thread(new Runnable() {
@Override
public void run() {
System.out.println("新线程中run方法被执行了");
}
}).start();
}
}
简化步骤如下:
lambda表达式不关注类型是什么,也不关注方法名是什么名,只关注匿名函数类中的参数列表和方法体。
- 我们简化掉了new Runnable()
- 我们简化掉了run
- 我们简化掉了@Override
相当于public void run () {
System.out.println("新线程中run方法被执行了");
} 标黄部分
powershell
public class Test {
public static void main(String[] args) {
new Thread(()->{
System.out.println("新线程中run方法被执行了");
}).start();
}
}
省略规则
- 参数类型可以省略
- 方法体里面只有一句代码时大括号以及return语句以及语句后面的分号(;)可以省略
- 方法体只有一个参数时方法小括号可以省略
- 都记不住不要紧,在IDEA中使用Alt+Enter键可以自动转换
以下代码是最简省略写法
powershell
public class Test {
public static void main(String[] args) {
int i= calculateNum((left, right) -> left + right);
System.out.println(i);
}
public static int calculateNum(IntBinaryOperator operator){
int a=10;
int b=10;
return operator.applyAsInt(a,b);
}
}