一、引例
笔者前段时间看到一道阿里的面试题,题目如下:用代码将int[]转化为Integer[]。我想大部分入门级的小伙伴首先想到的解决办法是new一个Integer[]然后遍历int[]将值塞入Integer[]中实现转换。代码如下:
这种方法也无可厚非,总归是实现了这样的转换。 但是如果你在面试中写出了如上的代码,那么可能程序还没执行完,你的面试也就over了。事实证明,我们一直在被不断更新的技术持续吊打,but有句话叫做“那些干不死我的,终将会使我变得更加强大”,废话不多说,直接上码如下:
是不是很神奇,我居然用一行代码就搞定了。上面的代码片段是使用Lambda表达式改写后的代码,简洁之美简直无以言表。那么具体Lambda是如何代替上面for循环中那么一长串代码的呢?它的机制是什么?别急,听我娓娓道来!
二、什么是Lambda表达式
Lambda表达式是Java SE 8中一个重要的新特性。lambda表达式允许你通过表达式来代替功能接口,允许使用更简洁的代码来创建只有一个抽象方法的接口的实例。笔者认为,这就是一种创建匿名实例的语法,这类语法要比匿名内部类创建实例时还要简洁。
Lambda 表达式的目标类型必须是"函数式接口( functional interface ) 。函