黑马程序员技术交流社区
标题: 【广州校区】+【原创】lambda表达式的理解 [打印本页]
作者: Mylo 时间: 2018-6-14 12:12
标题: 【广州校区】+【原创】lambda表达式的理解
本帖最后由 Mylo 于 2018-6-20 12:55 编辑
Lambda是JDK1.8的一个新特性,其实它主要想表达的一个思想就是:想做什么!也就是说,Lambda是不在乎过程,而是一种在乎结果的特性!具体怎么理解,我们看下面的代码。
1. 以前,我们写一个接口,然后就会写一个实现类,来重写接口里面的抽象方法。例如,以下是一个就和的接口以及它的实现类:
interface Sum{
int getSum(int a,int b);
}
class SumImpl implements Sum{
@Override
public int getSum(int a, int b) {
return a + b;
}
} |
这种方式是我们比较常见的,一个接口对应一个实现类,然后,我们发现我们的类只有一个抽象方法,弄一个类去实现接口搞起来也比较麻烦,这个时候,我们就用到了第二种方式,匿名内部类!
2. 使用匿名内部类的方式去重写抽象方法
Sum s = new Sum(){
@Override
public int getSum(int a, int b) {
return a + b;
}
}; |
根据上面的两个方法,无论我们是实现接口的方式重写方法还是直接用匿名内部类的方式去重写方法,都有一个特点:就是传入两个参数,然后return a + b; 这个也是我们的目的:传入两个参数,求两个数的和,然后返回两个数字的和。 那么,如果我们有中方式,直接去做这件事情,就更好了!Lambda表达式就是做这件事情的!
首先,我们先来了解一下Lambda的语法:
基本语法:
(parameters) -> expression 或 (parameters) ->{ statements; }
因为lambda是直接要求我们去做什么事情,根据上面的总结,我们可以推论出我们想要的代码就是 return a + b;这个时候我们就可以改为这样子:
Sum s = (a ,b)->{ return a + b;};
int sum = s.getSum(10,20);
System.out.println(sum); 30 |
从上面的例子可以看出来,(参数,不需要参数类型) -> {想要执行的代码};我们主要就是把我们想要执行的代码放在{}里面(推荐方式)!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |