JDK8新特性 ---- Lambda表达式

目录

1.1 概述

1.2 标准格式

1.3 省略模式

1.4 使用限制

1.5 Lmabda表达式的语法总结: () -> ();


1.1 概述

​ Lambda 表达式(lambda expression)是一个匿名函数。主要用来优化匿名内部类的结构。我们先看下传统的匿名内部类的使用方式。

new Thread(new Runnable() {
    @Override
    public void run() {
        System.out.println("有一个线程即将执行。");
    }
}).start();

​ 这是一个开启线程的案例,在这个案例中,这个Runnable的匿名实现类中,我们关注的其实只有里面的实现逻辑System.out.println("有一个线程即将执行。"),但整体代码显得非常繁琐跟冗余。JDK8提供了Lambda表达式来简化匿名内部类的写法,语法更加简洁,如下

new Thread(()->System.out.println("有一个线程即将执行。")).start();

1.2 标准格式

Lambda表达式的语法为:

([参数列表]) ->{
    代码体;
}

无参的代码演示:

public class Demo02Lambda {

    public static void main(String[] args) {
        Drinkable drinkable = ()->{
            System.out.println("喝水...");
        };

        drinkable.drink();
    }
}

interface Drinkable{
    void drink();
}

 有参的代码演示:

public class Demo03Lambda {

    public static void main(String[] args) {
        Eatable eatable = (food)->{
            System.out.println("大口的吃"+food);
            return "吃饱了";
        };

        String result = eatable.eat("牛肉");
        System.out.println(result);

    }
}

interface Eatable{
    String eat(String food);
}

1.3 省略模式

​ 在lambda标准格式的基础上,可以使用省略写法的规则:

  • 参数类型可以省略

  • 如果参数有且仅有一个,则小括号可以省略

  • 如果方法体中有且仅有一句代码,可以同时省略大括号、return关键字以及分号。

    如常规表达式为:

(i)->{
    return i+i; 
}

省略模式后为:

i->i+i 

1.4 使用限制

lambda表达式使用有几个条件需要特别注意:

  • lambda表达式是针对接口才能使用
  • 接口中必须有且仅有一个抽象方法,能被@FunctionalInterface注解修饰的方法

1.5 Lmabda表达式的语法总结: () -> ();

前置语法
无参数无返回值() -> System.out.println(“Hello WOrld”)
有一个参数无返回值(x) -> System.out.println(x)
有且只有一个参数无返回值x -> System.out.println(x)
有多个参数,有返回值,有多条lambda体语句(x,y) -> {System.out.println(“xxx”);return xxxx;};
有多个参数,有返回值,只有一条lambda体语句(x,y) -> xxxx

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值