2019-12-14
2019-12-14 本文已影响0人
supermans1202
java 8 特性
在java 8种主要引用了两个特性: lambda表达式和stream 流处理。
下面我将使用尽量干净的话语介绍lambda表达式。
lambda 表达式
lambda表达式可以理解为匿名函数
java 中如何传递 匿名函数呢? 方法是只定义一个 函数的借口。
interface DoSomething{
String function(String x);
}
然后我们就可以吧lambda表达式付给这个借口
下面是一个例子:
DoSomething x= (s)->{return s;};
从某种意义上来说,匿名函数是只有一个方法的匿名类的简写形式:
DoSomething x= new DoSomething() {
@Override
public String function(String x) {
return x;
}
};
其实上面的lambda表达式也可以进一步简写,这在你熟悉lambda后是有必要的:
DoSomething x= (s)->s;
下行起第三句话是重要的:
下行起第二话话是重要的:
下行起第一句话是重要的:
lambda的力量在于,可以把“操作”作为参数传递,让操作稍后实现。
算了,还是举一个简单的例子吧:
TimeUtils.timing(
"event3",//1
() -> {
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
},
(time) -> {
System.out.println(time);
return time;
}
);
我们可以实现这样的计时器。
- 第一个参数表示任务的标签: event3
- 第二个参数传递计时的操作: spleep 100ms
- 对计时进行输出:这里只是打印一下
这个工具类我有一个精妙的实现,可惜这页纸太小我写不下。
但可以给你看一下输出的结果:
--------------------------------------------------------------
event3 start -> event3 end
from [2019-12-14 20:35:10] to [2019-12-14 20:35:10]
spend: 0 days: 0 hours: 0 minutes: 0 seconds 101 millisecond 0 nanosecond
--------------------------------------------------------------
关注公众号:连狗都会写代码 ,获取相关代码。
![](https://img.haomeiwen.com/i2657567/d90baba288fcb85d.png)
![](https://img.haomeiwen.com/i2657567/cd99b1bb1778ce29.png)