java应该是可选的。ofNullable()是否用于空检查?
哪种空检查更可取
Optional.ofNullable(port).ifPresent(settings::setPort);
或
if (port != null) {
settings.setPort(port);
}
你可以在下面搜索框中键入要查询的问题!
哪种空检查更可取
Optional.ofNullable(port).ifPresent(settings::setPort);
或
if (port != null) {
settings.setPort(port);
}
# 1 楼答案
在Java中,
Optional
值是指示存在或不存在的位与任意引用类型T
或原语int
、long
或double
的值的融合当从方法返回值时,融合这些值尤其有用,因为方法只有一个返回值。在引用类型的情况下,经常需要使用一个特殊的值,例如
null
,或者在int
的情况下使用-1,作为指示“无值”情况的哨兵。使用Optional
作为返回值可以避免调用者意外地误用sentinel值作为实际返回值的问题鉴于此,代码行
奇怪的是,它将一个值与行的第一部分中的当前/不存在位进行融合,然后在行的第二部分立即将其分离。这增加了最终相当简单的任务的复杂性:检查
port
是否为非空,并有条件地执行某些操作。可供选择的代码片段:非常清楚地表达了它的功能
的确,if语句比}链更密集,但也更难理解:这是一个糟糕的权衡
Optional
链占用更多的垂直空间。{# 2 楼答案
虽然,您在问题中发布的代码片段只是一种避免丑陋的
null-check
的简单方法,但它是有效的、正确的和空安全的。在这种情况下,遵循你的个人偏好^{} 的真正力量是以下方法:
例如,假设您想从
port
中获取另一个值,以便添加到列表中,并在port
为null
时避免NPE:此外,请避免对我经常看到的
null-check
进行以下无意义的替换:# 3 楼答案
何时使用它取决于几个因素。 如果
port
是类中的一个属性,那么使用Optional
可能有点过头了。(不要像使用not serializbie一样使用Optional
s作为属性)我认为
Optional
是伟大的,例如写一个库对于其他开发人员来说更具描述性