zoukankan      html  css  js  c++  java
  • java知识学习43-Lambda表达式

    函数式编程思想概述:

      

      

    通过多线程匿名内部类写法和Lambda表达式写法作对比,分析其标准格式:Lambda三要素—》形式参数、箭头、代码块 

      

    Lambda表达式的格式:(形式参数)->{代码块};  

        形式参数:如果有多个参数,参数间用逗号隔开;没参数,为空即可;

        ->:代表指向动作。由英文中画线和大于符号组成,固定写法;

      代码块:指具体要做的事情,即方法体内容。

    Lambda表达式的使用前提:1、有一个接口;2、接口中有且仅有一个抽象方法。

        实例:带参数和不带参数的抽象方法

             

      带参数和返回值的抽象方法:

        

     Lambda表达式省略规则:

      1、参数类型可以省略,但是有多个参数的情况下,不能一部分省略一部分不省略,要么都不省略要么都省略;

      2、如果参数只有一个,则小括号也可以省略;

      3、如果代码块只有一条语句,则大括号和分号都可以省略,如果有返回值的则return也必须省略。

      

    Lambda表达式注意事项:

      

    Lambda表达式和匿名内部类的区别:

         

      实例如下:

     public static void main(String[] args) {
    // 匿名内部类方式
    testInter(new Inter() {
    @Override
    public void show() {
    System.out.println("匿名类接口");
    }
    });

    testAabstr(new Aabstr() {
    @Override
    void show() {
    System.out.println("匿名类抽象方法");
    }
    });

    testStudent(new Student(){
    @Override
    public void show() {
    System.out.println("匿名类具体方法");
    }
    });

    // Lambda表达式方式
    testInter(()->System.out.println("Lambda实现接口方法"));
    // testAabstr(()-> System.out.println("Lambda不能实现抽象方法")); // 抽象类不能用Lambda表达式
    // testStudent(()-> System.out.println("Lambda不能实现具体方法")); // 具体类不能用Lambda表达式

    }

    public static void testInter(Inter a) { // 调用方法,入参传入一个接口实现类对象,该接口中有个show方法
    a.show();
    }

    public static void testAabstr(Aabstr a) { // 调用方法,入参传入一个抽象类对象,该抽象类中有个抽象show方法
    a.show();
    }

    public static void testStudent(Student a) { // 调用方法,入参传入一个具体类对象,该具体类中有个show方法
    a.show();
    }

     

  • 相关阅读:
    【Codeforces542E】Playing on Graph [Bfs][Dfs]
    【Codeforces441E】Valera and Number [DP]
    单链表快速排序
    一个简易内存池(C++)
    最长回文子串---Manacher算法
    hihocoder 1015题
    简单的字典树(前缀树)
    C++获取基类指针所指子类对象的类名
    Muduo阅读笔记---net(三)
    C++线程安全的单例模式
  • 原文地址:https://www.cnblogs.com/blogofzxf/p/14698561.html
Copyright © 2011-2022 走看看