Учитывая спецификацию API, я ожидаю, что следующие два будут работать, в зависимости от того, хотите ли вы синхронный режим:
GeocodingResult[] results = geocodingApi.await();
for (GeocodingResult result: results) {
String address = result.formattedAddress;
// use it or check other fields on `result`
}
или асинхронное поведение
class FutureCompletingCallback implements PendingResult.Callback<GeocodingResult[]> {
final CompletableFuture<GeocodingResult[]> resultsFuture;
FutureCompletingCallback(CompletableFuture<GeocodingResult[]> resultsFuture) {
this.resultsFuture = resultsFuture;
}
public void onResult(GeocodingResult[] results) {
resultsFuture.complete(results);
}
public void onFailure(Throwable t) {
resultsFuture.compleExceptionally(t);
}
}
CompletableFuture<GeocodingResult[]> resultsFuture = new CompletableFuture<>();
geocodingApi.setCallback(new FutureCompletingCallback(resultsFuture));
// collect result synchronously
GeocodingResult[] results = resultsFuture.get()
// OR act asynchronously
resultsFuture.whenComplete(...some action...);