作为 Executor 实现的方法引用

Method reference as an Executor implementation

我一直在研究某人编写的示例 java 代码并遇到以下代码段:

Runnable runnable = () -> System.out.println("Thread name: " + Thread.currentThread().getName());

Executor executor;

executor = Runnable::run;
executor.execute(runnable);

所以,我无法弄清楚在这种情况下,方法引用如何使实例化一个 Executor 成为可能,如果它没有实现,又如何调用 execute(Runnable command)。一般来说,方法参考在这种情况下是如何工作的?

Executor符合函数式接口的定义,因为它有一个抽象方法。即这个:

void execute(Runnable command)

因此,为了实现此功能接口,我们需要的是一种在 Runnable 上运行的方法,returns 什么都不需要。 command -> command.run() 或简称 Runnable::run 是执行此操作的方法示例。

以下三段代码是等价的:

executor = Runnable::run;

executor = (Runnable command) -> command.run();

executor = new Executor() {
    public void execute(Runnable command) {
        command.run();
    }
}