zoukankan      html  css  js  c++  java
  • Java Lambda表达式

    Java Lambda表达式

     

    Lambda是什么

    在JDK 1.8  版本中新增了Lambda表达式

    作用:简化匿名内部类

    使用前提:必须是函数式接口

    函数式接口:只有一个必须被重写的抽象方法的接口

    强制检测是否为函数式接口,注解@FunctionalInterface

     

    语法

        ()->{}  
    ()  匹配要重写的抽象方法的参数列表
    ->  Lambda符号箭头具有上下文推导的作用
    {}  匹配要重写的抽象方法的方法体

     

    匿名内部类

    在讲解Lambda表达式之前先写一个匿名内部类的,好在接下来对它进行改写

    public class Demo01 {
    public static void main(String[] args) {

    new MyInterface() {
    @Override
    public void mehtod() {
    System.out.println("我是匿名内部类");
    }
    }.mehtod();
    }
    }

    interface MyInterface {
    void mehtod();
    }

     

    Lambda表达式

    用法1

    首先对上面的匿名内部类使用Lambda表达式进行改写

    public class Demo01 {
    public static void main(String[] args) {

    MyInterface m = () -> {
    System.out.println("我是Lambda表达式");
    };
    m.mehtod();
    }
    }

    @FunctionalInterface
    interface MyInterface {
    void mehtod();
    }

    用法2 

    方法体中如果方法语句只有一句,方法体前后的 {} 可以省略

    public class Demo01 {
    public static void main(String[] args) {

    MyInterface m = () -> System.out.println("我是Lambda表达式");
    m.mehtod();
    }
    }

    @FunctionalInterface
    interface MyInterface {
    void mehtod();
    }

    用法3

    如果有参数,参数的数据类型可以省略

    箭头有上下文推导的作用,可以根据上下文,寻找到所需要的参数类型

    public class Demo01 {
    public static void main(String[] args) {

    MyInterface m = (a,b) -> System.out.println("我是Lambda表达式"+a+b);
    m.mehtod();
    }
    }

    @FunctionalInterface
    interface MyInterface {
    void mehtod(int a,int b);
    }

    用法4

    如果有参数且只有一个,前后的()可以省略

    public class Demo01 {
    public static void main(String[] args) {

    MyInterface m = a -> System.out.println("我是Lambda表达式"+a);
    m.mehtod();
    }
    }

    @FunctionalInterface
    interface MyInterface {
    void mehtod(int a);
    }

    用法5

    如果语句体只有一句,并且还是return 语句, return关键字及前后的{}可以一起省略

    public class Demo01 {
    public static void main(String[] args) {

    MyInterface m = () -> "我是Lambda表达式";
    System.out.println(m.mehtod());
    }
    }

    @FunctionalInterface
    interface MyInterface {
    String mehtod();
    }
  • 相关阅读:
    Linux系统设置中文
    跟着小白学Linux基础命令系列
    Linux小白基础练习题
    htop命令超级好玩用法
    sed命令用法
    Linux三剑客grep命令的使用技巧
    Linux忘记密码如何修改密码
    决心书
    Linux无法上网,ping不通百度的解决方法
    AE 创建shp图层
  • 原文地址:https://www.cnblogs.com/CHOI-6/p/13257944.html
Copyright © 2011-2022 走看看