求好心人详细说明一下java8中加入的新特性lambda表达式的适用范围,什么时候用lambda方便,什么时候不适合用?
lambda和groovy切记不能混淆,前者是oracle为了解释方便添加的新语法,后者是美国2个本科生编写由google推动开发,的以独立文件方式编译的,需要额外虚拟机即扩展组件执行。
这2者共同点就是可测试alpha版本在jdk8等级上提出来的,因为jdk7和jdk6都有绕不过去的问题,你可以在jdk7上用,但是应该会在开发一些应用方面遇到一些问题,另外有一点开发pki方面程序的时候,后台解释器不一定能做到良好的兼容。
不过对于现在国家级企业来说,如银行,移动等,并没有完全使用这2门新语言趋向,国外中间厂商bea容器,ibm容器也没有计划引入这2门语言,所以在市场行为上目前还没啥可取性。
lambda相当于匿名函数,而java一直缺乏对匿名函数的支持。
之前要想传递函数,以及回调,使用匿名类实现接口,然后再实现方法,把匿名类传进去,代码比较啰嗦。
lambda简化了代码,不仅如此,lambda还支持闭包,所谓闭包,就是lambda块中直接可以使用所在代码的变量,而无需通过参数传递。
总之,lambda比实现接口更方便,几乎可以说完全代替匿名接口。
什么时候不适用?编写代码的另一方只开放了接口,而不允许你传lambda,你又不能修改它的代码,那就不能用,还有你的代码希望在之前的java编译器上能编译,也不能用。最后,你不会用,不想用,也可以不用。