JDK1.8新特性Lambda表达式
/** * Lambda * @date 2019/8/2 10:03 */ public class Lamda { public static void main(String[] args){ IEat iEat=new IEatImpl() ; iEat.eat("苹果"); IEat iEat1=new IEat(){//内部类new接口IEat()是接口//匿名内部类 @Override public void eat( String thing) { System.out.println("eat banna"+thing); } }; iEat1.eat("香蕉"); //Lambda 功能和上面一样 //1.代码更简洁,2.不能生成单度的class文件,3.只能实现一个方法 //带参数使用,可以省略参数类型(String thing)可以写成thing //(实现方法的参数)->{这里面写实现方法} IEat iEat2=(String thing)->{System.out.println("我是实现类"+thing);}; iEat2.eat("橘子"); IEat iEat5= thing->System.out.println("更简洁的写法"+thing);//更简洁的写法 iEat5.eat("更简洁"); //------------------------------------------------------------- //4.带返回值的: IEat1 iEat3=(thing)->{ System.out.println("我是实现类"+thing); System.out.println("可以多句"+thing); return 10; }; iEat3.eat("葡萄"); //5.带返回值还可以写成 IEat1 iEat4 = (thing)->thing==null?1:0; //参数中可以写final String thing } } interface IEat{ public void eat(String thing);//可以传参 //接口中可以有一个default默认方法 对Lambda表达式没有影响 public default void print(){ System.out.println("我是接口的默认方法"); } } class IEatImpl implements IEat{ @Override public void eat(String thing) { System.out.println("吃"+thing); } } //带返回值的接口 interface IEat1{ public int eat(String thing);//可以传参 }
把匿名内部类的写法简单化,实现一个接口的方法.