lambda如何替换Anonymous new 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()突然不再需要了

如果您的匿名类只有一个方法,则可以将其实现为lambda表达式。这里作为lambda传递的是run方法的实现。Lambda表达式使您能够更紧凑地表达单个方法类的实例。

最新更新