方法引用作为Executor实现

时间:2017-08-01 21:52:17

标签: java lambda runnable executor method-reference

我一直在研究一个由某人编写的示例java代码,并面对以下代码段:

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

Executor executor;

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

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

1 个答案:

答案 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();
    }
}