我一直在研究一个由某人编写的示例java代码,并面对以下代码段:
Runnable runnable = () -> System.out.println("Thread name: " + Thread.currentThread().getName());
Executor executor;
executor = Runnable::run;
executor.execute(runnable);
所以,我无法弄清楚在这种情况下方法引用如何使实例化Executor成为可能,如果没有实现,如何调用execute(Runnable command)
。一般情况下,方法参考在窗帘后面如何工作?
答案 0 :(得分:3)
Executor
符合功能接口的定义,因为它有一个抽象方法。即这一个:
void execute(Runnable command)
因此,为了实现这个功能接口,我们需要的是一个在Runnable上运行并且不返回任何内容的方法。 command -> command.run()
或简称Runnable::run
是一个可以执行此操作的方法示例。
以下三位代码是等效的:
executor = Runnable::run;
executor = (Runnable command) -> command.run();
executor = new Executor() {
public void execute(Runnable command) {
command.run();
}
}