为了账号安全,请及时绑定邮箱和手机立即绑定

5分钟了解 JAVA lambda 表达式

标签:
Java


     Java8 的 lambda 表达式,与其他语言的匿名函数一样,是一段可以被传递的代码,因此可以被执行一次或多次。


    可能很多人一看见带 -> 这样的箭头函数就发蒙,其实,只要知道两个字,就可以基本理解lambda表达式了,这两个字就是——推断。


    每个lambda表达式都对应一个函数式接口,函数式接口是只包含一个抽象方法的接口,而lambda表达式,就是这个抽象接口的具体实现,所以通过这两个对应关系,jvm在解析lambda表达式时,就可以推断出很多东西,比如接口类型、方法的参数类型,以及方法的返回值类型等。


    通过这些推断,使lambda表达式看起来神秘而简洁。而一旦了解推断的方式,对于lambda表达式的方法引用,如: System.out::println ,和构建器引用,如:

        List<String> labels=.........;

        Stream<Button> stram = label.stram().map( Button::new );

理解起来都很容易了


    下面通过几幅原创的漫画,说明一下推断的过程







    当然,使用lambda表达式还有一些需要特别注意的问题,最重要的需要遵守的约束就是,在lambda中,被引用的变量,即闭包之外的变量,不可被更改。


    如下代码即违背了这一约束:


    public static void repeatMessage(String text, int count) {

        Runable r = () -> {

            while (count > 0) {

                count--; //错误,不能更改闭包引入变量的值

            }

        }

    }


    至于为什么有这样一个约束,主要式基于线程安全方面的考虑。


    

敬请关注---盲点技术号,我们将持续努力与您一起学习探讨开发技术

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消