gpt4 book ai didi

java - Optional.ofNullable() 是否应该用于空检查?

转载 作者:搜寻专家 更新时间:2023-10-31 08:25:09 25 4
gpt4 key购买 nike

哪种空检查更可取?

Optional.ofNullable(port).ifPresent(settings::setPort);

if (port != null) {
settings.setPort(port);
}

最佳答案

在 Java 中,Optional 值是指示存在或不存在的位与任意引用类型 T 或原始 的值的融合intlongdouble

当从方法返回值时,融合它们特别有用,因为方法只有一个返回值。通常需要使用一个特殊的值,例如在引用类型的情况下使用 null,或者在 int 的情况下使用 -1,作为指示“无-值”的情况。使用 Optional 作为返回值可以避免调用者不小心误用 sentinel 值作为真正的返回值的问题。

鉴于此,代码行如

Optional.ofNullable(port).ifPresent(settings::setPort);

的奇怪之处在于它在该行的第一部分将一个值与存在/不存在的位融合,然后立即在该行的第二部分将它们分开。这给原本相当简单的任务增加了复杂性:检查 port 是否为非空并有条件地执行某些操作。替代代码片段:

if (port != null) {
settings.setPort(port);
}

非常清楚地准确表达了它的作用。

的确,if 语句比 Optional 链占用更多的垂直空间。 Optional 链更密集,但也更难理解:一个糟糕的权衡。

关于java - Optional.ofNullable() 是否应该用于空检查?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52038417/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com