Мы работаем над асинхронизацией некоторых вызовов с использованием аннотации @Async и CompletableFutures в Java. У нас есть несколько Pojo, для которых мы создаем объекты в нашем асинхронном вызове, но при попытке собрать результаты в список Eclipse хочет, чтобы я изменил список нашего Pojo на список объектов, а я не понимание того, является ли CompletableFuture ответом от потока по умолчанию.
List<Pojo1> crudResponse = null;
List<Pojo1> listOfIterations = new ArrayList<>();
//populates object with multiple entries in list
listOfIteration = populateIterationObject(param);
crudResponse = listOfIterations.stream()
.map(str -> CompletableFuture.supplyAsync(() -> {
try {
return async.hitCrud(str);
}catch(RequestProcessingException e){
log.error(e);
}
return function;
}))
.map(CompletableFuture::join)
.collect(Collectors.toList());
}
//async class
public CompletableFuture<Pojo1> hitCrud(Pojo1 iteration) throws RequestProcessingException {
try {
String response;
Pojo1 pojoResponse;
response = connectToCrud(iteration);
if(response != null) {
pojoResponse.add(response);
}
}catch(Exception ex){
log.error(ex);
}
return CompletableFuture.completedFuture(pojoResponse);
}
Я нажимаю метод, чтобы вернуть объект Pojo1, но когда я пытаюсь создать список с помощью Collectors.toList (), он ожидает, что у меня будет список <Object>
, с которым я могу работать, но требуется больше кода для извлечения и преобразования каждого ответ я возвращаюсь от асинхронного вызова.
Является ли это CompletableFuture значением Object по умолчанию? Если да, то можно ли по умолчанию использовать тип Pojo1?
Изменить: ошибка, которую я вижу в среде IDE:
Type mismatch: cannot convert from List<Object> to List<Pojo1>
function
? - person John Bollinger   schedule 12.12.2017