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