Java8·Lambda

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;
                }
        );

我们可以实现这样的计时器。

  1. 第一个参数表示任务的标签: event3
  2. 第二个参数传递计时的操作: spleep 100ms
  3. 对计时进行输出:这里只是打印一下

这个工具类我有一个精妙的实现,可惜这页纸太小我写不下。
但可以给你看一下输出的结果:

--------------------------------------------------------------

   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

--------------------------------------------------------------

关注公众号:连狗都会写代码 ,获取相关代码。


image.png image.png
上一篇 下一篇

猜你喜欢

热点阅读