Вы можете привести ссылку на метод
asyncMethod().addListener((GenericFutureListener<Future<String>>) Example::callback);
Это менее многословно, но все же не идеально. Чтобы немного улучшить это решение, вы можете переместить определение длинного типа в функциональный интерфейс
class Example {
@FunctionalInterface
private interface Callback extends GenericFutureListener<Future<String>> {
void operationComplete(Future<String> future) throws Exception;
}
private static void callback(Future<String> future) {
System.out.println(future.getNow());
}
public static void main(String[] args) {
asyncMethod().addListener((Callback) Example::callback);
}
}
Или вы можете заключить обратный вызов в лямбда с набранным аргументом
asyncMethod().addListener((Future<String> f) -> callback(f));
Может быть, это можно сделать лучше, ИДК.