• Lambda 表达式推演全过程


    Java 的 Lambda 表达式推演过程:

    第一步:正常的类实现(外部实现),new一个对象,然后重写方法实现

    public class TestLambda3 {
    
        public static void main(String[] args) {
            Human human = new Man();
            human.run(1);
        }
    }
    
    //定义一个函数式接口
    interface Human {
        void run(int a);
    }
    
    //外部实现类
    class Man implements Human {
        @Override
        public void run(int a) {
            System.out.println("A man can run fast --> " + a);
        }
    }
    

    第二步:把类的实现放到内部,静态内部类

    public class TestLambda3 {
    
        //实现类:静态内部类
        static class Man implements Human {
            @Override
            public void run(int a) {
                System.out.println("A man can run fast --> " + a);
            }
        }
    
        public static void main(String[] args) {
            Human human = new Man();
            human.run(2);
        }
    }
    
    //定义一个函数式接口
    interface Human {
        void run(int a);
    }
    

    第三步:局部内部类

    public class TestLambda3 {
    
        public static void main(String[] args) {
    
            //实现类:局部内部类
            class Man implements Human {
                @Override
                public void run(int a) {
                    System.out.println("A man can run fast --> " + a);
                }
            }
    
            Human human = new Man();
            human.run(3);
        }
    }
    
    //定义一个函数式接口
    interface Human {
        void run(int a);
    }
    

    第四步:匿名内部类,没有类的名称,必须借助接口或父类

    public class TestLambda3 {
    
        public static void main(String[] args) {
    
            //实现类:匿名内部类
            Human man = new Human(){
                @Override
                public void run(int a) {
                    System.out.println("A man can run fast --> " + a);
                }
            };
    
            man.run(4);
        }
    }
    
    //定义一个函数式接口
    interface Human {
        void run(int a);
    }
    

    第五步:Lambda简化

    public class TestLambda3 {
    
        public static void main(String[] args) {
    
            //Lambda简化
            Human man = (a) -> {
                    System.out.println("A man can run fast --> " + a);
            };
    
            man.run(5);
        }
    }
    
    //定义一个函数式接口
    interface Human {
        void run(int a);
    }
    

    第六步:Lambda 再简化成一行

    public class TestLambda3 {
    
        public static void main(String[] args) {
    
            //Lambda简化
            Human man = a -> System.out.println("A man can run fast --> " + a);
    
            man.run(6);
        }
    }
    
    //定义一个函数式接口
    interface Human {
        void run(int a);
    }
    

    总结:
    1、 对于函数式接口,我们可以通过 Lambdaa 表达式来创建该接口的对象。
    2、什么是函数式接口?任何接口,如果只包含唯一一个抽象方法,那么它就是一个函数式接口。
    3、如果接口不是函数式接口,就不能用 Lambda 表达式来创建该接口的对象了。
    4、Java 的 Runnable 接口就是函数式接口,该接口里面只有一个 run() 方法。
    5、如果方法的执行体里面有多行,就不能做到第六步里面那样简化成一行,需要用第五步里的 {} 包裹代码段。

    为什么要使用 Lambda 表达式?
    1、避免匿名内部类定义过多
    2、可以让你的代码看起来很简洁
    3、去掉了ー堆没有意义的代码,只留下核心的逻辑。

  • 相关阅读:
    web架构
    网站开发的学习交流 系统架构 负载均衡
    数据库连接
    OpenCV4【12】边缘检测
    python基础_格式化输出(%用法和format用法)
    Python之telnetlib模块
    根据文字或图片来生成用于Banner输出的字符画
    Python3 range() 函数用法
    Python psutil cpu_percent调用说明
    @staticmethod和@classmethod的用法
  • 原文地址:https://www.cnblogs.com/bigband/p/13544075.html
Copyright © 2020-2023  润新知