Java之Lambda表达式详解

Lambda 表达式,也可称为闭包,它是推动 Java 8 发布的最重要新特性
Lambda 允许把函数作为一个方法的参数(函数作为参数传递进方法中)。
使用 Lambda 表达式可以使代码变的更加简洁紧凑。

一、lambda 表达式的语法格式如下:

标准格式:

(形式参数)->{代码块}
Lambda表达式组成三要素:括号,箭头,代码块

Lambda表达式的代码分析
●  (): 里面没有内容,可以看成是方法形式参数为空
●  ->:用箭头指向后面要做的事情
●  {}: 包含一段代码,我们称之为代码块,可以看成是方法体中的内容

实例如下,用匿名内部类和Lambda表达式分别启动一个线程,相对于匿名内部类,我们会发现 Lambda 表达式更简洁


public class RunableDemo01 {
    public static void main(String[] args) {
        //匿名内部类的方式启动一个线程
        new Thread(new Runnable() {
            @Override
            public void run() {
                System.out.println(Thread.currentThread().getName()+"线程启动啦");
            }
        }).start();
        //Lambda表达式的方式启动一个线程
        new Thread(()-> System.out.println(Thread.currentThread().getName()+"线程启动啦")).start();
    }
}

二、Lambda表达式具体实例:

Lambda表达式使用前提

  • 有一个接口
  • 接口中有且仅有一个抽象方法

实例一
Lambda表达式是 方法 在调用接口中抽象方法时 直接实现接口中的抽象方法(如下)
在这里插入图片描述
实例二
这个是抽象方法带参时Lambda表达式如何传参(如下)
在这里插入图片描述
实例三:
Lambda表达式在一些情况下是可以省略简写的(如下)
接口:

package cnn.lambdaTest.Demo04;

public interface LamDemoImpl {
    void fun(String s);
}

测试类:


public class LamDemo01 {
    public static void main(String[] args) {
        useFun((String s)->{
            System.out.println(s);
        });
        //参数的类型可以省略
        useFun((s)->{ System.out.println(s);});
        //单个参数可以省略括号
        useFun(s-> {System.out.println(s);});
        //代码块中单个语句可以省略大括号
        useFun(s-> System.out.println(s));
    }

    private static void useFun(LamDemoImpl la) {
        la.fun("如何省略呢");
    }
}

省略的几种情况:

  • 可选类型声明:不需要声明参数类型,编译器可以统一识别参数值。
  • 可选的参数圆括号:一个参数无需定义圆括号,但多个参数需要定义圆括号。
  • 可选的大括号:如果主体包含了一个语句,就不需要使用大括号。
  • 可选的返回关键字:如果主体只有一个表达式返回值则编译器会自动返回值,大括号需要指定明表达式返回了一个数值。

Lambda 表达式使用注意事项:

  1. 使用Lambda表达式必须要有接口,并且接口中有且只有一个抽象方法
  2. 必须有上下文环境,才能推导出Lambda表达式对应的接口
根据局部变量的赋值知Lambda对应的接口: Runnabler=() -> System.out.println("Lambda表达式");
根据调用方法的参数得知Lambda对应的接口: new Thread() -> System.out.printIn("Lambda表达式).start();

Lambda表达式与匿名内部类的区别可以看这个:传送门,有助于加深Lambda表达式的理解

  • 13
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mr小布懂

谢谢那么帅还对我这么好

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值