暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Java新特性解读JDK8之Lambda表达式

227decision 2020-01-04
583

什么是Lambda?

Lambda是一个匿名函数,即没有函数名的函数。

为什么要使用Lambda?

使用Lambda表达式可以对接口进行非常简洁的实现

    package com.example.lambdademo;
    /**
    * 接口
    * @author thehe
    *
    */
    public interface Test {
      int test();
    }


    package com.example.lambdademo;
    /**
    * 接口实现类
    * @author thehe
    *
    */
    public class TestImpl implements Test{

    @Override
    public int test() {
    // TODO Auto-generated method stub
    System.out.println("Test接口实现类中方法执行了");
    return 0;
      }
    }


    package com.example.lambdademo;
    /**
    * 接口实现方法比较
    * @author thehe
    *
    */
    public class LambdaDemo {

    public static void main(String[] args) {
    //使用接口实现类
    Test test = new TestImpl();
    test.test();
    //使用匿名内部类
        Test test2 = new Test() {
    @Override
    public int test() {
    System.out.println("匿名内部类中test方法执行了");
    return 0;
    }
    };
    test2.test();
    //使用lambda表达式实现
    Test test3=()->{
    System.out.println("lambda表达式中test方法执行了");
    return 0;};
          test3.test();
      }
    }

    上面代码中的“匿名内部类”解释:一个继承了类的子类的匿名的对象或者一个实现了接口的实现类的匿名对象。

    开发中,最常用到的内部类就是匿名内部类,以接口举例,使用接口通常步骤:

    1. 定义子类

    2. 重写接口中的方法

    3. 创建子类对象

    4. 调用重写后的方法

    匿名内部类可以简化使用接口,语法格式如下:

      new 父类名或者接口名(){
      // 方法重写
      @Override
      public void method() {
      // 执行语句
      }
      };

      怎样使用Lambda表达式?

      Lambda表达式的实现方式在本质是以匿名内部类的方式进行实现。

      Lambda表达式使用前提:接口必须是函数式接口,即只包含一个抽象方法的接口。

      Lambda表达式语法:(params)->{expression}

      1. 第一部分为括号内逗号分隔的形式参数,参数是函数式接口里面方法的参数;

      2. 第二部分是一个箭头符号 ->,读作 goes to;

      3. 第三部分方法体可以是表达式和代码块。

      参数列表:括号内的参数列表的数据类型可以省略不写;参数只有一个,那么()也可以省略。

      方法体:如果{}中的代码只有一条语句并且是返回语句,无论是否有返回值,可以省略{},return,分号。代码如下:

        Test test3=()->1;
        System.out.println(test3.test());//输出1
        最后修改时间:2020-07-01 13:37:33
        文章转载自227decision,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

        评论