我知道Optionals ifPresent()调用的目的是替换空检查。从Oracle文档中提取代码示例,它在简单情况下似乎非常有用。例如:
Optional<Soundcard> soundcard = ...;
soundcard.ifPresent(System.out::println);
我只是想了解为什么这被认为比空检查更好。可读性?表演在我看来,这会对项目性能造成影响,因为必须引入一个新的对象才能容纳我们最终希望获得的对象?总之,为什么这是声卡。ifPresent()
如果(声卡!=null),则认为比这更好。
可选
是一种用非空值替换可空引用的方法。可选
可以包含非空引用(在这种情况下,我们称引用为“存在”),也可以不包含任何内容(在这种情况下,我们称引用为“不存在”)。它从未被称为“包含null”
除了可读性之外,如果您想让程序编译,它还迫使您考虑不存在的情况,因为您必须主动打开Optional
并解决该情况。
来源:使用和避免null
如前所述,看看这篇得到彻底回答的帖子。
我想做这样的东西: 这将不起作用,因为ifPresent将使用者函数接口作为参数,它具有void accept(t)。它不能返回任何值。还有别的办法吗?
编译错误->[无法推断flatMap(函数>)的类型参数]
我知道你不能从返回,所以这个例子不起作用: 其中,可以返回有效字符串或空可选字符串。我所做的工作是: 这是更长的,并没有太大的不同,只是检查空值摆在首位。我觉得必须有一个更简洁的方式使用可选。
我看到一段让我难以理解的代码,将其简化并放在这里: 模型类被定义为具有公共方法: 我的问题是: 对于
当我从DB中检索学生实体时,存储库返回一个可为null的