lambda表达式


package com.daxing.lambda;
//推导lambda表达式
// 前提,接口是函数式接口,任何接口,如果只包含唯一一个抽象方法,那么这个接口就是函数式接口
public class TestLambda1 {
    // 方法二:静态内部类
    static class Like2 implements ILike{
        @Override
        public void lambda() {
            System.out.println(" i like lambda 2");
        }
    }

    public static void main(String[] args) {
        //方法一,new一个接口的实现类
        ILike like = new Like();// 或Like like = new Like() 也可以
        like.lambda();

        // 方法二:静态内部类
        like = new Like2();//或 Like2 like2=new Like();like2.lambda()
        like.lambda();

        // 方法三:局部内部类
        class Like3 implements ILike{
            @Override
            public void lambda() {
                System.out.println(" i like lambda 3");
            }
        }
        Like3 like3 = new Like3();
        like3.lambda();

        //方法四:匿名内部类,没有类的名称,必须借助接口或者父类
       ILike ilike=new ILike(){
           @Override
           public void lambda(){
               System.out.println(" i like lambda 4");
           }
       };
        ilike.lambda();

        // 方法5:用lambda简化代码,jdk8之后出现
        // 避免内部类定义过多,可以让代码看起来简洁
        ILike i=()->{
            System.out.println(" i like lambda 5");
        };
        i.lambda();
    }

}

// 定义一个函数式接口
interface ILike{
    void lambda();
}
// 接口实现类
class Like implements ILike{
    @Override
    public void lambda() {
        System.out.println(" i like lambda1");
    }
}