Java 8可选和flatMap – 出了什么问题?
发布时间:2020-12-15 04:22:54 所属栏目:Java 来源:网络整理
导读:一些代码: public class Player { Team team; String name;}public class Team { ListPlayer players;}public class Demo { @Inject TeamDAO teamDAO; @Inject PlayerDAO playerDAO; ListString findTeamMatesNames(String playerName) { OptionalPlayer pl
一些代码:
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方法中我收到错误“类型不匹配:无法从列表转换为可选” 我的目标是: >如果存在可选项,我想根据此可选对象属性获取项目列表 解决方法
您可以使用map执行所需的操作.如果Optional为空,则不会发生映射操作,但再次留空可选.您可以在以后提供后备值:
player.map(p -> teamDAO.findPlayers(p.team)).orElse(Collections.emptyList()) 从播放列表到播放器名称字符串列表的映射不能由Optional执行;这是一个Stream任务: Optional<Player> player = Optional.ofNullable(playerDAO.get(playerName)); return player.map(p -> teamDAO.findPlayers(p.team) .stream().map(tp -> tp.name).collect(Collectors.toList())) .orElse(Collections.emptyList()); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |