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);
}

浙公网安备 33010602011771号