我有以下人员类别:
class Person {
String name;
String city;
public void setInfo(PersonInformation info) {//...};
}
我有一个来自此类的对象列表,我想使用返回 CompletableFuture 的方法异步查询列表中每个项目的数据库来填充它们的信息:
List<CompletableFuture<Void>> populateInformation(List<Person> people) {
return people.stream().
.collect(groupingBy(p -> p.getLocation(), toList()))
.entrySet().stream()
.map(entry ->
CompletableFuture.supplyAsync(
() -> db.getPeopleInformation(entry.getKey())
).thenApply(infoList -> {
//do something with info list that doens't return anything
// apparently we HAVE to return null, as callanbles have to return a value
return null;
}
)
).collect(Collectors.toList());
}
问题是我收到编译错误,因为方法中的代码返回CompletableFuture<List<Object>>而不是CompletableFuture<List<Void>>. 我在这里做错了什么?
我想过删除return null,但正如我在评论中提到的,似乎在可调用中我们必须返回一个值,否则会出现另一个编译错误:Incompatible types: expected not void but the lambda body is a block that is not value-compatible
萧十郎
摇曳的蔷薇
相关分类