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);//可以传参
}

 把匿名内部类的写法简单化,实现一个接口的方法.

 

posted @ 2019-08-12 19:13  三只坚果  阅读(310)  评论(0编辑  收藏  举报