Reputation: 2086
I have this piece of code:
CompletableFuture
.supplyAsync(() -> {
return smsService.sendSMS(number);
}).thenApply(result -> {
LOG.info("SMS sended " + result);
});
but I got a compilation error:
The method
thenApply(Function<? super Boolean,? extends U>)
in the typeCompletableFuture<Boolean>
is not applicable for the arguments((<no type> result) -> {})
Upvotes: 0
Views: 1225
Reputation: 23624
You want to use thenAccept
not thenApply
thenApply
takes a Function
which is of the form
public interface Function<T, R> {
R apply(T t);
}
thenAccept
takes a Consumer
which is of the form
public interface Consumer<T> {
void accept(T t);
}
The lambda you provided does not have a return value; it is void. Because a generic type parameter cannot be void your lambda cannot be casted as a Function
interface. On the other hand, the Consumer
has a void return type which the lambda could satisfy.
Upvotes: 3