• java Lambda


    Lambda的主要作用是替代匿名内部类,更为简洁。

    Lambda表达式的目标类型必须是函数式接口,函数式接口就是只包含一个抽象方法的接口(该接口可以包含多个默认方法、类方法)。

    Lambda表达式只能为函数式接口创建对象,Lambda表达式只能实现一个方法,故其所实现的接口只能有一个抽象方法。

    匿名内部类的实现方式如下:

    public class Test {
    
        public static void main(String args[])  {
    
            // 匿名内部类实现Computation接口
            Computation adder = new Computation(){
    
                // 实现add()方法
                public int add(int a, int b) {
                    return a+b;
                }
            };
    
            System.out.println(adder.add(5, 6));
    
        }
    }
    
    interface Computation {
    
        public abstract int add(int a, int b);
    }

    Lambda表达式的实现方法如下:

    public class Test {
    
        public static void main(String args[])  {// Lambda表达式实现Computation接口
            Computation adder = (a,b) -> a+b;
    
            System.out.println(adder.add(5, 6));
    
        }
    }
    
    interface Computation {
    
        public abstract int add(int a, int b);
    }

    Lambda表达式由三部分组成,以Computation adder = (a,b) -> a+b; 为例

    形参列表。如上述中的(a,b),允许省略形参类型。

    箭头 ->。

    代码块,如上a+b。   若代码块只有一句可以省略花括号{}, 只有一条return语句,也可以省略return。

                                      Computation adder = (a,b) -> a+b;等价于Computation adder = (int a, int b) -> {return (a+b);};

    Lambda表达式与匿名内部类的主要区别如下:

    匿名内部类可以为任意接口创建实例,不管改接口包含多少抽象方法,而Lambda表达式只能为函数式接口(只包含一个抽象方法)创建实例。

    匿名内部类可以抽象类普通类创建实例。

    匿名内部类实现抽象方法的方法体允许调用接口中的默认方法;Lambda表达式的代码块不允许。

  • 相关阅读:
    npm 引入第三方过滤器
    登录加密 md5
    JavaScript 日期处理类库 moment
    Axios 是一个基于 promise 的 HTTP 库,可以用在浏览器和 node.js 中。
    js 常见的小数取整问题
    vue 路由跳转到外部链接
    js some和filter用法和区别
    前端调用后端接口返回200(成功状态码),后端有返回,但是控制台Network Response为空,没展示任何信息
    二叉树的镜像
    树的子结构
  • 原文地址:https://www.cnblogs.com/deltadeblog/p/8401349.html
Copyright © 2020-2023  润新知