作为 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();
}
}
我一直在研究某人编写的示例 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();
}
}