【发布时间】:2014-12-02 20:53:01
【问题描述】:
一段代码:
public class Player {
Team team;
String name;
}
public class Team {
List<Player> players;
}
public class Demo {
@Inject
TeamDAO teamDAO;
@Inject
PlayerDAO playerDAO;
List<String> findTeamMatesNames(String playerName) {
Optional<Player> player = Optional.ofNullable(playerDAO.get(playerName));
return player.flatMap(p -> teamDAO.findPlayers(p.team))
.map(p -> p.name)
.orElse(Collections.emptyList());
}
}
为什么我不能这样做?在 flatMap 方法中,我收到错误“类型不匹配:无法从列表转换为可选”
我的目标是:
如果存在 optional 我想根据这个可选对象属性获取项目列表
如果 optional 不存在,我想返回空列表
【问题讨论】:
-
你得到什么错误?
-
你得到什么错误? teamDAO.finPlayers 是什么?
-
findTeamMatesNames中的team从何而来? -
这不是你要的重点。在 flatMap 我得到:“类型不匹配:无法从 List
转换为 Optional -
@coolcfan 他的代码被破坏了,团队应该是玩家。
标签: java map java-8 optional flatmap