Java 8的新特性lambda表达式是否比匿名内部类具有更好的可读性
3个回答
2018-07-05 · 百度知道合伙人官方认证企业
育知同创教育
1【专注:Python+人工智能|Java大数据|HTML5培训】 2【免费提供名师直播课堂、公开课及视频教程】 3【地址:北京市昌平区三旗百汇物美大卖场2层,微信公众号:yuzhitc】
向TA提问
关注
展开全部
对于大多数刚刚接触jdk8的同学来说,应该都会认为lambda表达式其实就是匿名内部类的语法糖(包括我自己,在刚刚接触的时候,也是这样认为的),但实际上二者还是存在不少差异,其中最主要的两点就是标识性和作用域。
首先,内部类在创建表达式时,会确保创建一个拥有唯一标识的新对象,而对于lambda,其计算结果(其实就是一个映射的过程)可能有也可能没有唯一标识,这取决于具体实现。
其次,内部类的声明会创建出一个新的命名作用域,在这个作用域中,this与super指向内部类本身的当前实例;但是lambda恰恰相反,它不会引入任何新的命名环境,这样就避免了内部类名称查找的复杂性,名称查找会导致很多问题,比如想要调用外围实例的方法时却错误的调用了内部类实例的Object方法。
首先,内部类在创建表达式时,会确保创建一个拥有唯一标识的新对象,而对于lambda,其计算结果(其实就是一个映射的过程)可能有也可能没有唯一标识,这取决于具体实现。
其次,内部类的声明会创建出一个新的命名作用域,在这个作用域中,this与super指向内部类本身的当前实例;但是lambda恰恰相反,它不会引入任何新的命名环境,这样就避免了内部类名称查找的复杂性,名称查找会导致很多问题,比如想要调用外围实例的方法时却错误的调用了内部类实例的Object方法。
2017-11-06 · 【免费测试,验证码5秒必达】
北京巴卜技术有限公司
北京巴卜技术有限公司(以下简称巴卜)是具备国际水准的移动商务平台技术和应用方案提供商。自成立以来,巴卜始终 致力于为国内外企业提供具备国际技术水准的移动商务平台及运营服务。
向TA提问
关注
展开全部
java8中的新特性支持Lambda表达式.引入Lambda,最直观的一个意义是,不用再写大量的匿名内部类。事实上,还有由于函数式编程本身特性带来的提升。比如:代码的可读性会更好、高阶函数引入了函数组合的概念。此外,因为Lambda的引入,集合操作也得到了极大的改善。比如,引入streamAPI,把map、reduce、filter这样的基本函数式编程的概念与Java集合结合起来。在大多数情况下,处理集合时,Java程序员可以告别for、while、if这些语句。随之而来的是,map、reduce、filter等操作都可以并行化,在一些条件下,可以提升性能。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
是的,Lambda表达式允许非常便捷地传入一个代码块来实现函数式接口,并且还有多种简写写法,不仅是可读性更高,代码执行效率、编写效率也都有提高。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询