我有这段代码:
CompletableFuture
.supplyAsync(() -> {
return smsService.sendSMS(number);
}).thenApply(result -> {
LOG.info("SMS sended " + result);
});
但是出现编译错误:
类型中的方法
thenApply(Function<? super Boolean,? extends U>)
CompletableFuture<Boolean>
不适用于参数((<no type> result) -> {})
答案 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可以满足的。