Почему эта программа выводит «Hello»? (как указатель на функцию переводится в Runnable.run () в Java) - PullRequest
0 голосов
/ 16 января 2020

В следующем примере программы печатается Hello. метод exampleMethod(Runnable toRun) имеет параметр типа Runnable. Указатель на функцию MyTest::sayHello не имеет метода run. Как это выполнено?

public class MyTest {

    // Method that takes a "method" as argument
    static void exampleMethod(Runnable toRun) {
        toRun.run();
    }

    // Method to pass
    static void sayHello() {
        System.out.println("Hello");
    }


    public static void main(String[] args) throws Exception {
        exampleMethod(MyTest::sayHello);  // prints "Hello"
    }
}

1 Ответ

1 голос
/ 16 января 2020

Код внутри основного метода такой же, как:

Runnable runnable = () -> {
MyTest.sayHello();
};

exampleMethod(runnable);
...