gpt4 book ai didi

java - 为什么我们可以在Optional.of()上调用.orElse()?

转载 作者:行者123 更新时间:2023-12-02 10:47:01 24 4
gpt4 key购买 nike

我很好奇为什么可以这样做(至少在 Java 8 上):

Optional.of(null).orElse("something");

Optional.of(null) 基本上是一个有保证的空指针。允许对其调用 .orElse() 会给笨拙的开发人员带来意想不到的漏洞。我一直在四处寻找是否有任何理由这样做。也许这应该解决某些场景?

最佳答案

您可以这样做,其原因与您可以编写 ((String) null).length() 的原因相同。 Java 编译器对某些事情(例如类型安全)有一个静态检查器,但不会检查或拒绝可能引发 NullPointerException 的代码。如果是这样,代码 throw new NullPointerException(); 也将不被允许。

抛出异常的代码通常不会是错误。虽然静态检查器可以检测到这种情况并发出警告,但如果这是一个错误,那就糟糕了。一些 IDE 会生成自己的有关可能错误的警告,但您必须决定什么值得检查或不值得检查。

检测这个可能的错误需要一个静态检查器,该检查器的设计需要了解 Optional.of 方法的行为。 Java Language Specification 的作者已决定对不安全的强制转换等问题发出警告,但不对任何依赖于所使用方法的语义的事情发出警告。这一决定的一个优点是,这意味着 JLS 可以与 Java Class Library 分开维护。文档。

关于java - 为什么我们可以在Optional.of()上调用.orElse()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58646664/

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