当您编写匿名Runnable时,例如:
Thread producer = new Thread(new Runnable() {
@Override
public void run() {
// do something
}
});
IntelliJ 建议将其替换为以下 lambda:
Thread producer = new Thread(() -> {
// do something
}
});
效果一样好。
这到底是如何工作的?特别是:
- 使用的构造函数仍然是
Thread(Runnable target)
,但 lambda 中似乎没有任何内容表明它是 Runnable。 - 为什么
@Override public void run()
突然不再需要了?
最佳答案
如果您的匿名类只有一个方法,您可以将其实现为 lambda 表达式。这里作为 lambda 传递的是 run
方法的实现。 Lambda 表达式可让您更紧凑地表达单一方法类的实例。
关于java - lambda 替换 Anonymous new Runnable() 是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53027843/