package java1;
//1.定义一个函数式接口
//必须是函数式接口(只能有一个方法)
interface ILike{
void Lambda();
}
interface ILove{
void Love(int a);
}
//2.实现类
class Like implements ILike{
@Override
public void Lambda() {
System.out.println("I Like Lambda1");
}
}
public class TestLambda {
//3.静态内部类
static class Like2 implements ILike{
@Override
public void Lambda() {
System.out.println("I Like Lambda2");
}
}
public static void main(String[] args) {
ILike like = new Like();
like.Lambda();
like = new Like2();
like.Lambda();
//4.局部内部类
class Like3 implements ILike{
@Override
public void Lambda() {
System.out.println("I Like Lambda3");
}
}
like = new Like3();
like.Lambda();
//5.匿名内部类,必须借助接口或者父类
like = new ILike(){
@Override
public void Lambda() {
System.out.println("I Like Lambda4");
}
};
like.Lambda();
//6.用Lambda简化(无参)
like =()->{
System.out.println("I Like Lambda5");
};
like.Lambda();
//7.用Lambda简化(有参)
ILove love =(int a)->{
System.out.println("I Love You"+a);
};
love.Love(520);
//8.简化参数类型(多个函数参数也可以去掉函数类型,要去掉都去掉,但是不能去掉括号)
love =(a)->{
System.out.println("I Love You"+a);
};
love.Love(521);
//9.简化括号
love =a->{
System.out.println("I Love You"+a);
};
love.Love(522);
//10.简化花括号注意!!!只能有一个语句才能去掉花括号
love =a->System.out.println("I Love You"+a);
love.Love(523);
}
}