lambda表达式
匿名内部类:可以是接口,可以是抽象类,可以是具体类。
lambda表达式:只能是接口
匿名内部类:接口中可以有多个抽象方法
lambda表达式:接口中只能有一个抽象方法
new Thread(new Runnable(){
public void run(){
sout("匿名内部类创建类接受参数为接口");
}
}).start();
new Thread(() -> {
sout("类接受参数为接口的lambda表达式")
}).start();
method(new interface(){
public void run(){
sout("匿名内部类形式调用形参为接口的方法")
}
});
method(() -> {
sout("lambda表达式形式调用形参为接口的方法");
});
//参数的类型可以省略
//多个参数时,不能只省略一个
method((int x) -> {
return x;
});
method((x) -> {
return x;
});
//如果参数只有一个,小括号可以省略
method(x->{
return x;
});
//如果代码块语句只有一条,可以省略大括号和分号省略
//如果代码块包括return,return也要省略
method(x->sout(x));
method(x->x);