Lambda的演变和理解

7.Lambda表达式

/*
实现Lambda表达式的前提:		1必须是函数式接口。也就是说只能有一个方法
		下面是正常的演变从1到6
*/
package com.wen.lambda;

/**
 * @Author WangEn
 * @CreateTime: 2021-04-10-14-37
 * @Emile: wen_5988@163.com
 */
// 推导Lambda表达式
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();  // 需要注意*****************************
        //4. 简化成局部内部类
        /*class Like3 implements ILike{
            @Override
            public void lambda() {
                System.out.println("i like lambda3");
            }
        }
        Like3 like2 = new Like3();
        like2.lambda();*/
        // 5.匿名内部类,没有类的名称,必须借助接口或者父类
        like = new ILike() {
            @Override
            public void lambda() {
                System.out.println("i like Lambda5");
            }
        };
        like.lambda();

        // 6.Lambda成型
        like = ()-> {			// like就是*上面注意实现类的指向
            System.out.println("i like Lambda6");
        };
        like.lambda();

    }
}


// 1.定义一个函数式接口
// 函数式接口就是,只能有一个方法
interface ILike{
    void lambda();
}

// 2.实现类
class Like implements ILike{
    @Override
    public void lambda() {
        System.out.println("I like Lambda");
    }
}

7.1Lambda带参数类型

package com.wen.lambda;

/**
 * @Author WangEn
 * @CreateTime: 2021-04-10-15-17
 * @Emile: wen_5988@163.com
 */
public class TestLambda2 {

    public static void main(String[] args) {
        ILove love = null;    // 注意********************
        // 简化 1
        love = (a,b) -> {
            System.out.println("I Love you " + a+b);
        };
        love.love(5,8);
        // 简化 2
        love = (a,b) -> System.out.println("I Love Lambda" + (a*b));

        love.love(2,3);
        /**
         * 总结:
         * lambda表达式只能有一行代码的情况下才能简化成一行,如果有多行,就只能用代码块包裹
         * 前提是接口为函数式接口
         * 多个参数也可以去掉参数类型
         */
    }
}

interface ILove{
    void love(int a,int b);
}
posted @ 2021-04-10 16:17  W·EN  阅读(71)  评论(0)    收藏  举报