我正在学习可选课程.我对方法Optional.ifPresent(Consumer Consumer)的正确使用感到困惑.
我在一个项目上看到了这个例子:
Optional.ofNullable(user.getIdentifiantAAA())
.ifPresent(id -> identifiants.add(new Identifiant(id, IdentifiantType.AAA));
恕我直言,这不如:
if (user.getIdentifiantAAA() != null) {
identifiants.add(user.getIdentifiantAAA());
}
A container object which may or may not contain a non-null value. If a
value is present, isPresent() will return true and get() will return
the value.
我觉得示例的Optional.ifPresent的使用违反了该类的主要建议.仅使用isPresent方法创建Optional的实例,在这种情况下是否真的必要?
因此,我的问题是:应该将对象包装在Optional中,以使其非null并使用Optional.ifPresent(Consumer< ;? super T> Consumer)方法执行代码吗?
解决方法:
可选的< T>并不是要代替简单的if检查,第一个例子绝对不是Optional< T>的原因.已创建.
只有在执行某些扩展逻辑时,才使用ifPresent才有意义:
Optional.ofNullable(user.getIdentifiantAAA())
.map(...)
.ifPresent(...);
或如果您正在操作的值已经是Optional< T> ;,则可能是Optional< T>从方法调用或某些计算返回.
标签:optional,java
来源: https://codeday.me/bug/20191024/1924306.html