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();
    }
  • 相关阅读:
    框架基础
    Servlet
    JSP数据交互二
    动态网页开发基础
    数据交互
    期末Java Web大作业----简易的学生管理系统
    南阳71----独木舟上的旅行
    南阳1092----数字分隔(二)
    顺序表、链表、栈和队列
    各类排序模版(计数排序、基数排序、桶排序、冒泡排序、选择排序、插入排序、希尔排序、归并排序、原地归并排序、快速排序、堆排序)
  • 原文地址:https://www.cnblogs.com/CHOI-6/p/13257944.html
Copyright © 2011-2022 走看看