Вы можете использовать df.index
для доступа к объекту индекса, а затем получить значения в списке, используя df.index.tolist()
.
Вы можете разыграть ссылку на метод
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));
Может быть, это можно сделать лучше, ИДК.
У вас есть следующие варианты:
asyncMethod().addListener((GenericFutureListener<Future<String>>) future -> Application.callback(future))
private static void callback(Future<? super String> future) {
из простого Future<String> future
Таким образом, вы также можете использовать обратный вызов.
Примечание. Если вы запутались в проблеме ? extends vs ? super
обобщения, у меня эта публикация SO добавлена в закладки по той же причине.