Jdk8之lambda表达式的使用(一)

Jdk出来也已经很久了,一直没有时间去了解,今天趁着有空,小金子带你们使用一下Jdk中最让我感兴趣的部分:lambda表达式,使用这个可以很大程度上减少代码量,并且让代码看上去更舒心!废话就不多说啦,直接带你们使用吧!

1.第一次来点简单的:

下面是一个接口,相信大家都看得懂,是不是和Runnable接口很像呢?确实,其实定义这个接口的目的就是为了获取Run方法中线程要执行的代码.所以这里我们可以说这个接口是一个功能性接口,因为我们实现这个接口就是为了实现某一个单一的功能


以前的写法:


可以看到很多代码虽然不用我们自己敲,但是看上去还是有点多

那我们看看现在的写法:


是不是惊呆了?

这里先介绍一点知识:Java提供了一个新的操作符"->" 这个操作符之前有一个括号,括号里面就是接口中的那个唯一的方法的参数列表,操作符后面就是我们以前实现接口中的方法中的语句,具体就以上面的代码为参照。。

这都是Jdk开发人员提供给我们的便利,得感谢他们。

注意这里有使用的前提的.

第一点:接口中就只有一个抽象方法,也就是我们刚刚定义的接口,里面就只有一个抽象方法如果不止一个,直接看错误吧!



其实就是说你的目标接口必须是一个功能性的接口,类似于Runnable,说白了就是只有一个抽象方法!

第二点:这种表达式只支持一个语句,也就是一个;第二个;内的就不属于表达式的内容了,但是为了满足我们肯定是有另外的方式的,这个后续介绍!

有了这个表达式,我们在new 一些内部类的时候就不需要写那么多代码了,让我最开始想到的就是Android里面的控件监听的接口.哈哈....


回归正题,上面是最简单的一个例子,下面我们改变一下,我们使接口中的方法定义成有返回值的!

2.接口中的方法有返回值:


返回值是一个String类型的,那我们在使用的时候有什么需要注意的么?

看下面吧



是不是使用起来也很方便呢?但是这里面你没法通过判断一些标识,然后返回你需要的数据,因为这里不是{}包裹的,所以只能容纳一句语句.但是我们想到可以用三目运算啊!



3.我们更上一层楼!我们继续学习接口中的方法是有参数的!


从这里我们可以看到有参数的其实也是很简单的,就是 操作符 "->"前面的括号中写了一个参数的变量名,然后你可以看到这个变量在后面的语句中我们就可以使用的!

有的人就有疑惑了,不对啊,JAVA不是明确方法中参数列表的类型的么,这里怎么没有写name变量是什么类型的呀,这是因为这里是省略了,为什么这么说呢,因为你这个lambda表达式就是为了实现一个功能性接口中的抽象方法,Java他自己能判断出你这个name是什么类型的,也就是大多数人所说的能从上下文中获取这个变量的类型.其实说白了就是接口你知道了,这个接口只有一个抽象方法,方法中的参数你获取不到?答案肯定是获取的到的,继而这里我认为是可以省略而已,所以这里你不允许在括号中为name变量声明一个其他类型


看到了吧,因为他检测到你这个name变量的类型是String,你却一定要写成int的

而你照着下面的写,这是没事的!


因为检测到你声明的和接口中的是一致的,这里有的人可能又有问题了,既然可以省略,为什么还要加上去呢,这不是画蛇添足么,在我现在理解来看,就我个人理解哦:是为了让我们自己的代码能看的更清楚!


好了lambda表达式第一篇就介绍到这里,下一篇继续介绍lambda表达式!

下一篇:http://blog.csdn.net/u011692041/article/details/50364395

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值