【发布时间】:2020-07-10 02:47:56
【问题描述】:
我知道匿名函数在 JS 中是如何工作的,但我对 Java 中的部分匿名函数有点困惑。
所以下面我有一个匿名类(我只是使用 Thread 类作为我所看到的示例),我在其中重写 run() 函数,然后调用 .start() 在那个类上。
new Thread() {
@Override
public void run() {
System.out.println("Hello from the anonymous class thread");
}
}.start();
所以这行得通,但 IntelliJ 想让我把它改写成这样:
new Thread(() -> System.out.println("Hello from the anonymous class thread")).start();
我了解了大部分这种语法,但对于如何覆盖 run() 函数有点困惑。据我了解,没有参数被传递给 Thread 类(所以我假设没有任何参数传递给构造函数)。现在我感到困惑的地方就在这里。它没有在任何地方声明它覆盖 run() 函数。这是 Thread 类的特例还是我遗漏了什么?
希望我解释清楚并提前感谢!
【问题讨论】:
标签: java multithreading lambda java-8 anonymous-class