/**
* Lambda表达式
*/publicclassLambda1{//3 静态内部类staticclassLike2implementsIlike{@Overridepublicvoidlambda(){System.out.println("i like lambda2");}}publicstaticvoidmain(String[] args){/*
接口 对象=new 实现类
父类 对象=new 实现类
好处:减少开发过程中代码的修改量
定义一个animal抽象类, 里面有两个方法。
接下里定义两个类(cat和dog)去继承animal,cat和dog分别重写了animal中的方法。
我们在调用dog里面的方法之后,想修改为调用cat的方法。
只需要将Animal animal=new Dog()改成Animal animal=new Cat(), 只改变了一个对象。接着继续调用animal.sing(),animal.run()。
*/Ilike like =newLike();
like.lambda();//3
like =newLike2();
like.lambda();//4 局部内部类classLike3implementsIlike{@Overridepublicvoidlambda(){System.out.println("i like lambda3");}}
like =newLike3();
like.lambda();//5 匿名内部类:没有类的名称,必须借助接口或父类
like =newIlike(){@Overridepublicvoidlambda(){System.out.println("i like lambda4");}};
like.lambda();//6 用lambda简化
like =()->{System.out.println("i like lambda5");};
like.lambda();}}//1 定义一个函数式接口:只有一个抽象方法的接口interfaceIlike{voidlambda();}//2 实现类classLikeimplementsIlike{@Overridepublicvoidlambda(){System.out.println("i like lambda");}}
/*
*总结:
* lambda表达式在只有一行时可以简化掉{}
*前提是接口为函数式接口
*多个参数也可以去掉参数类型,要去掉就都去掉,必须加上括号
*/publicclassLambda2{publicstaticvoidmain(String[] args){//1 lambda表示简化Ilove love =(int a)->{System.out.println("I love you==>"+a);};//简化1 参数类型
love =(a)->{System.out.println("I love you==>"+a);};//简化2 简化括号
love = a->{System.out.println("I love you==>"+a);};//简化3 去掉花括号
love = a ->System.out.println("I love you==>"+a);
love.love(5);}}interfaceIlove{voidlove(int a);}