【发布时间】:2018-02-13 08:18:31
【问题描述】:
对 Optional 的用法有点困惑。 如何使用 Optional 获得相同的结果?
ModuleEntity module = n.getOutline().getModule()==null?n.getOutline().getParent().getModule():n.getOutline().getModule();
return m.getModule().equals(module)
尝试了很多,但总是NullpointerException...
例如:
m.getModule().equals(Optional.ofNullable(n.getOutline().getModule()).orElse(n.getOutline().getParent().getModule())))
完整代码如下:
List<RoleModel> roles = app.getRoles().stream()
.filter(r -> RoleType.MODULE.equals(r.getType()))
.collect(Collectors.toList()).stream()
.map(m -> {
RoleModel role = Entity2ModelUtils.entity2Model(m);
role.setRoles(app.getRoles().stream()
.filter(o -> RoleType.OUTLINE.equals(o.getType()))
.collect(Collectors.toList()).stream()
.filter(n -> m.getModule().equals(Optional.ofNullable(n.getOutline().getModule()).map(zz->n.getOutline().getModule()).orElse(n.getOutline().getParent().getModule())))
.map(z -> Entity2ModelUtils.entity2Model(z))
.collect(Collectors.toList()));
return role;})
.collect(Collectors.toList());
【问题讨论】:
-
什么是 n ?显示该课程
-
另一个对象..添加了完整代码
-
最好能说出你想要达到的目标。
-
@pvpkiran
reuturn a==null?b:c这就是我想要做的。 -
使用
Optional来替换三元语句是一种可疑的做法,但a==null ? b : a可以写成Optional.ofNullable(a).orElse(b)