lambada表达式介绍

前言

在其他语言中,函数式编程是很常见的,java8中为了支持函数式编程,新增了lambada表达式。lambada表达式其实是匿名内部类和闭包的一种符号表示,至于概念性的问题,大家不必深究,lambada表达式会用就可以了。

1.为何需要lambada表达式

在js中,函数的参数是另一个函数,返回值也是一个函数的情况是根常见的,因此js也是一门典型的函数式语言。而在java8以前的版本中,我们是无法将函数作为参数传递给一个方法的,也无法声明返回值是一个函数的方法,但是这种需求是存在的,java中,匿名内部类实际上就是在一个方法的参数位置声明一个匿名的内部类,这种代码结构的核心代码就几句,但是结构代码却比较长,是比较冗余的,如果用lambada表达式来实现这这种代码结构,是非常简洁的,并且可读性也比较强,所以java8中提供了lambada表达式

2.如何使用lambada表达式

lamba表达式的符号表示为 ->,其基本结构形式为:(param1,param2,param3…)-> { }

如果只有一个参数,可以不加小括号,只有一行执行代码,也可以没有箭头后面的大括号,比如 i ->System.Out.Println(i);

如果没有参数 ,只需要一个小括号即可,比如:()-> System.Out.Println(“hello”);

下面代码示例:

public class LambadaExample {
    public static void main(String[] args) {
        //不使用lamba表达式
        new Thread(new Runnable() {
            @Override
            public void run() {
                System.out.println("hello,I am lambada");
            }
        }).start();

        //使用lambada表达式
        new Thread(() -> System.out.println("hello,I am lambada")).start();

        //lambada的执行代码有多行
        new Thread( () -> {
            try {
                TimeUnit.SECONDS.sleep(5);
                System.out.println("I am also lambada");
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }).start();

        //有参数的lambada表达式
        Consumer<Integer> consumer = (i) -> System.out.println(i);
        consumer.accept(666);
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值