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();
    }
  • 相关阅读:
    Object.prototype的原型对象 格式化日期【js笔记】
    数组中去掉重复的 【js笔记】
    按照内容多少,每行自动按照内容较多的div设置其他div的高度【jq笔记】
    动态操作表格 【js笔记】
    关于记录任意选择行删除或者其他的操作【jq笔记】
    Good studying and day day up
    第三周星期一
    第二周星期天
    第二周星期六
    第二周星期五
  • 原文地址:https://www.cnblogs.com/CHOI-6/p/13257944.html
Copyright © 2011-2022 走看看