我的ide(intelij)一直告诉我,我的代码“可以用函数式的单个表达式替换”,突出了 isPresent()
:
return timestamp.isPresent() ? new Obj2(timestamp.get()) : null;
``` `timestamp` 初始化为可选:
Optional timestamp = ...
我的假设是我应该使用 `ifPresent` . 这样地 `timestamp.ifPresent(Obj2::new)` . 但是 `ifPresent` 是空的,我没有机会返回创建的对象。也不能再回来了 `null` . 我的代码有解决方案吗?
2条答案
按热度按时间iyzzxitl1#
另外,比如
forEach()
,ifPresent()
将消费者作为参数,以便引入副作用。您通常会使用它来打印或记录东西。wgx48brx2#
你说得对
ifPresent
返回void,因此不适合这种情况。ide建议您只需执行以下操作:它的意思是“如果
timestamp
具有当前状态,然后将其包含的对象传递到Obj2
并返回这个新的Obj2
其他示例(orElse
)返回null
.另一方面,intellij idea可以帮助您生成它所建议的代码。
例如,给出以下屏幕截图:
我只需单击“突出显示”部分并按“alt+enter”,intellij建议是否应该用函数样式替换条件。