为什么Lambda表达式这么重要?(java8新特性)

一个很重要的一点是:C/C++语言是有函数指针的,函数指针可以作为一个参数传给一个方法,而java是没有这个特性的。为了解决这个问题,Lambda表达式就出来了!Lambda表达式的核心就是函数式接口

 什么是函数式接口?

一个接口中只定义了一个抽象函数,称为函数式接口。

为什么需要函数式接口?

我们知道,java中方法是不能作为参数传给另一个方法的。方法的调用是需要引用载体的(类、对象或者接口),但为了执行一个方法就去新建一个类或者对象,是很繁琐的。于是,接口就理所应当承担这个“函数指针”的任务了!

为什么Lambda表达式是长这样的?()->{}

当一个接口中只有一个函数的时候,当用到这个接口时,我们都不需要关心方法名是什么,我们关心的是参数和函数体。于是(参数)->{函数体}的样子就出来了,并起了个名字为Lambda表达式

 

有了Lambda表达式以后,我们就可以大胆的做下面这件事:

//是否是奇数        
boolean flag = isOddNumber((a, b) -> {
            System.out.println(a + b);
            return a + b;
        });

表面上isOddNumber()方法的参数是一个接口,实际上我们以一种优美的方式传了一段代码给isOddNumber方法。因为函数式接口可以隐式转为Lambda表达式。我们根本不需要知道Calculation这个接口有个sum函数,因为sum函数体就在我们眼前!

下面是对应的接口和函数:

public interface Calculation {
    int sum(int a, int b);
}

private static boolean isOddNumber(Calculation c) {
    Random random = new Random();
    int a = random.nextInt(), b = random.nextInt();
    return c.sum(a, b) % 2 != 0;
}

其实,没有Lambda表达式,也是可以实现这样的功能,但是不优美,函数体不明显,多了一些无用的信息。

boolean flag = isOddNumber(new Calculation() {
            @Override
            public int sum(int a, int b) {
                System.out.println(a+b);
                return a+b;
            }
        });

所以说,为什么Lambda表达式这么重要,因为java是一门优美的语言,而Lambda表达式让java显示出了这种优美!

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值