瞬间让你弄懂Lambda表达式

一、为什么会有Lambda表达式

目前各种语言中都出现了函数编程的概念,这个留给大家去了解下。

自从JDK1.8之后,Java中支持了Lambda表达式,给函数式编程了一个实现的机会。

用了Lambda表达式后,你的代码会比你想象起来的简洁的多。

二、实战

Talk is cheap,Show me the code!

我们定义一个接口,里面只能有一个方法,是默认方法,在接口上我们添加注解@FunctionalInterface。这就是传说中的函数式接口。

@FunctionalInterface
public interface TestInterface {
    public String write(String name);
}

我们有一个方法,需要使用如上的接口中的方法的功能:

public static void test (TestInterface testInterface) {
    String name ="jxl";
    System.out.println(testInterface.write(name));
}

那么问题来了,我们现在想要调用test方法,我们需要一个实现了TestInterface接口的类,可是有了Lamdba表达式,我们只需要像以下这样做,以下test方法中,写了一段代码,就是用来定义上面的那个接口的实现类的,是不是很像匿名内部类呢,但是他可是定义了接口中的那个默认的方法的实现的,所以为什么说是函数式编程的呢!

public static void main(String[] args) {
    test((String name) -> {
        System.out.println(name);
        return "heihei";
    });
}

三、使用场景

你可能会问,代码是简单了,可是如果我们的实现类被很多次使用呢?对了,说明咱们思考了。

Lambda表达式的使用场景:代码只在一处调用,而且代码比较简单,否则是不适用Lambda表达式的。

四、总结

  1. 我们来分析下以上的用例,本来test方法需要一个实现了接口TestInterface的类的对象传入的,而我们使用了Lambda表达式,我们只需要在括号中定义这个类即可。
  2. 形式为(参数1, 参数2, …)->{代码块},也就是我们不需要接口中的方法的名字,只需要参数和实现的代码块即可。
  3. 还有个问题,我们只是传递了对象,这个对象的方法是否调用,要看test方法中是否调用了write方法。

五、测试

我们可以测试下代码改成如下,会有什么样的打印效果?

@FunctionalInterface
public interface TestInterface {
    public String write(String name);
}

public static void test (TestInterface testInterface) {
    String name ="jxl";
    System.out.println(name);
}

public static void main(String[] args) {
    test((String name) -> {
        System.out.println(name);
        return "heihei";
    });
}

如果我们猜对了,说明我们队Lambda表达式比较清楚了。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值