【问题标题】:How does a lambda replacing an Anonymous new Runnable() work? [duplicate]替换 Anonymous new Runnable() 的 lambda 是如何工作的? [复制]
【发布时间】:2018-10-28 02:13:32
【问题描述】:

当你写一个匿名的Runnable比如:

Thread producer = new Thread(new Runnable() {
      @Override
      public void run() {
        // do something
      }
});

IntelliJ 建议用以下 lambda 替换它:

Thread producer = new Thread(() -> {
       // do something
    }
});

效果一样好。

这究竟是如何工作的?特别是:

  1. 使用的构造函数仍然是 Thread(Runnable target),但 lambda 中似乎没有任何内容表明它是 Runnable。
  2. 为什么突然不再需要@Override public void run()

【问题讨论】:

    标签: java lambda runnable anonymous-class


    【解决方案1】:

    如果您的匿名类只有一种方法,您可以将其实现为 lambda 表达式。您在此处作为 lambda 传递的是 run 方法的实现。 Lambda 表达式让您可以更紧凑地表达单方法类的实例。

    【讨论】:

      猜你喜欢
      • 2015-08-28
      • 2015-10-28
      • 2017-09-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-04
      • 2019-06-01
      • 1970-01-01
      • 2014-07-12
      相关资源
      最近更新 更多