获取CompletableFuture.supplyAsync的结果

时间:2018-10-23 16:15:10

标签: java lambda java-8 completable-future nhlambdaextensions

我有这段代码:

CompletableFuture
    .supplyAsync(() -> {
        return  smsService.sendSMS(number);
    }).thenApply(result -> {
        LOG.info("SMS sended " + result);
    });

但是出现编译错误:

  

类型中的方法thenApply(Function<? super Boolean,? extends U>)   CompletableFuture<Boolean>不适用于参数((<no type> result) -> {})

1 个答案:

答案 0 :(得分:3)

您要使用thenAccept而不是thenApply

thenApply采用Function形式

public interface Function<T, R> {
    R apply(T t);
}

thenAccept采用Consumer形式

public interface Consumer<T> {
    void accept(T t);
}

您提供的lambda没有返回值;它是空的。由于通用类型参数不能为空,因此您的lambda无法转换为Function接口。另一方面,Consumer的返回类型是lambda可以满足的。