语法:() ->{重写的方法体内容}
1.必须要有接口类型的引用指向lambda表达式
2.lammbda表达式 根据可推倒可省略原则:
(1)重写的方法中的参数类型可以省略,如果只有一个参数,可以省略括号()
(2)如果重写的方法内容中只有一条表达式,可以省略{},如果有返回值,return可以省略
public class Test {
public static void main(String[] args) {
//编写一个实现类的传统写法
MyThread myThread = new MyThread();
Thread t1 = new Thread(myThread);
t1.start();
//匿名内部类的写法
Thread t2 = new Thread(new Runnable() {
@Override
public void run() {
System.out.println("匿名内部类的写法");
}
});
t2.start();
//Lambda表达式的写法
Thread t3 = new Thread(()->{
System.out.println("Lambda表达式的写法");
});
t3.start();
/*参数类型可省略,因为可以根据接口推倒出来,如果方法体内容只有一条,
可省略大括号,如果有返回值,可以省略return*/
MyInterface1 m = (a,b)->a+b;
int sum = m.sum(10, 20);
System.out.println(sum);
}
}
public class MyThread implements Runnable {
@Override
public void run() {
System.out.println("编写一个实现类的传统写法");
}
}
public interface MyInterface1 {
int sum(int a,int b);
}