zoukankan      html  css  js  c++  java
  • 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表达式的代码块不允许。

  • 相关阅读:
    原码, 反码, 补码的基础概念和计算方法.
    QoS in RoCE
    TCP拥塞控制算法之NewReno和SACK
    intel xeon家族介绍
    Intel 处理器架构演进 转
    IP报文头详解
    高性能网络服务器编程:为什么linux下epoll是最好,Netty要比NIO.2好?
    tcp拥塞控制 tahoe reno new reno sack
    TCP/IP详解--拥塞控制 慢启动 快恢复 拥塞避免
    LTTng 简介&使用实战
  • 原文地址:https://www.cnblogs.com/deltadeblog/p/8401349.html
Copyright © 2011-2022 走看看