lambda表达式与内部类学习

package com.lambda;

public class Test {

static class Believe1 implements IBelieve {

//3、静态内部类
@Override
public void believe(String s) {
System.out.println("我爱你" + s);
}
}
public static void main(String[] args) {
IBelieve believe = new Believe();
believe.believe("中国");

believe = new Believe1();
believe.believe("中国1");

//4、局部内部类
class Believe2 implements IBelieve {
@Override
public void believe(String s) {
System.out.println("我爱你" + s);
}
}
believe = new Believe2();
believe.believe("中国2");

//5、匿名内部类,没有类的名称,必须借助接口或者父类
believe = new IBelieve() {
@Override
public void believe(String s) {
System.out.println("我爱你" + s);
}
};
believe.believe("中国3");


//1、lambda表达式简化
believe =(String s)-> {
System.out.println("我爱你" + s);
};
believe.believe("中国4");

//简化1、参数类型
believe =( s)-> {
System.out.println("我爱你" + s);
};
believe.believe("中国5");

//简化2、简化括号
believe =s -> {
System.out.println("我爱你" + s);
};
believe.believe("中国6");

//简化3、去掉花括号
believe = s-> System.out.println("我爱你" + s);
believe.believe("中国7");
//总结:
//lambda表达式只能有一行代码的情况下才能简化成为一行,如果有多行,那么就用代码块包裹。
//前提是接口为函数式接口:接口里面只有一个方法。
//多个参数也可以去掉参数类型,要去掉就都去掉

}
}
//1、定义一个函数式接口
interface IBelieve{
void believe(String s);
}
//2、实现类
class Believe implements IBelieve{
@Override
public void believe(String s) {
System.out.println("我爱你"+s);
}
}
posted @ 2021-11-27 16:35  tuyin  阅读(45)  评论(0)    收藏  举报