Lamda表达式

public class TestLamda {
//3.静态内部类
static class Like2 implements ILike{
@Override
public void lambada(){
System.out.println("I Like lambada2");
}
}

public static void main(String[] args) {

ILike like= new Like();
like.lambada();

like = new Like2();
like.lambada();

//4.局部内部类
class Like3 implements ILike{
@Override
public void lambada(){
System.out.println("I Like lambada3");
}
}
like =new Like3();
like.lambada();

//5.匿名内部类,没有类的名称,必须借助接口或者父类
like = new ILike() {
@Override
public void lambada() {
System.out.println("I Like lambada4");
}
};
like.lambada();

//6.用lambada简化
like =() ->{
System.out.println("I Like lambada5");
};
like.lambada();

}
}
//1.定义有一个函数式接口
interface ILike{
void lambada();
}
//2.实现类
class Like implements ILike{

@Override
public void lambada(){
System.out.println("I Like lambada");
}
}

 

 

public class Lambada2 {

 

public static void main(String[] args) {
Ilove love =null;
//1.Lambada表达式简化
// Ilove love = (int a) ->{
// System.out.println("I love you "+a);
// };
//简化1:去掉参数类型
love=(a,b)->{
System.out.println("I love you "+a);
System.out.println("I love you too"+b);
};

//简化2:简化括号
/* love=a ->{
System.out.println("I love you "+a);
};*/

//简化3:去掉{}
//love=(a,b) -> System.out.println("I love you "+a);
love.Love(521,520);

/*总结
* Lambada表达式只有一行代码的情况下才能简化成为一行,如果有多行,那么就用diamante块包裹。
* 前提是接口为函数式接口
* 多个参数也可以去掉参数类型,要去掉就都去掉,必须加上括号。
* */

}
}

interface Ilove{
void Love(int a,int b);
}

posted @ 2021-07-27 17:35  清钦  阅读(57)  评论(0)    收藏  举报