我有以下代码:
private List<User> findUsers(...) {
...
return usersData.stream() //userData is another list of objects
.findFirst()
.map(this::getCode)
.map(code-> {
if (...) {
Optional<AnotherObject> anotherObject = getAnotherObject();
return anotherObject.map(userService::getUsersFromAnotherObject) // getUsersFromAnotherObject returns List<User> but the whole line returns Optional of List<User>
} else {
...
return null;
}
}).orElseGet(() -> findXYZ(...));
}
它不会编译并说:
“lambda 表达式中的返回类型错误:List<User>
无法转换为Optional<List<User>>
”
,即使 findXYZ 和所有其他 if/else 语句实际上返回了 List 类型。
有人可以向我解释代码有什么问题吗?
编辑:对不起,我注意到其中一个 if 语句实际上是返回 List 的 Optional
如果有人感兴趣,我只需将第一个“if”编辑为:
return userService.getUsersFromAnotherObject(anotherObject.orElse(null));