Я знаю, как работают анонимные функции в 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 или мне чего-то не хватает?
Надеюсь, что я четко объяснил это, и заранее спасибо!