Java8中的这语法 为什么可以这么写?

       final CompletableFuture<Class> classCompletableFuture = CompletableFuture.supplyAsync(() -> {

final Class aClass = loader.parseClass(s, generateScriptName());

return aClass;

}, Runnable::run);

    public static <U> CompletableFuture<U> supplyAsync(Supplier<U> supplier,

Executor executor) {

return asyncSupplyStage(screenExecutor(executor), supplier);

}

问题: 第一段代码中传递了 Runnable::run 函数,Runnable是接口,run方法是抽象方法。
而supplyAsync方法签名中第二个参数是Executor, Runnable::run能作为Executor吗?


回答:

方法引用有时候看着确实比较迷惑,拆开看就清楚了

        Executor executor1 = new Executor() {

@Override

public void execute(Runnable command) {

command.run();

}

};

Executor executor2 = runnable -> runnable.run();

Executor executor3 = Runnable::run;


回答:

Runnable::run 是一个 Consumer , 消费的是 Runnable , 那么 Executor 刚好符合这个接口

帮忙支持我的开源项目: https://gitee.com/sanri/sanri...

以上是 Java8中的这语法 为什么可以这么写? 的全部内容, 来源链接: utcz.com/p/944322.html

回到顶部