gpt4 book ai didi

java - 为什么 guava/java 使用 possible.isPresent() 而不是Optional.isPresent(possible)?

转载 作者:行者123 更新时间:2023-12-02 06:14:59 24 4
gpt4 key购买 nike

关于https://code.google.com/p/guava-libraries/wiki/UsingAndAvoidingNullExplained据解释,guava(以及后来的 java 8)添加了一个泛型类Optional,以清除 null 检查。

如果一个函数返回一个Optional,它要求调用者在使用它之前解开字符串。

这通常以以下形式完成

Optional<String> possible = returnAnAbsentOptional();
if(possible.isPresent()){
System.out.println(possible.get())
}

如果 returnAnAbsentOptional 返回 null,我们就会再次遇到 NPE。

我的问题是,为什么 Guava/Java 使用 possible.isPresent() 而不是可以对 null 值做出相应 react 的Optional.isPresent(possible)?

最佳答案

Optional 的想法并不是要阻止所有的 NPE。这个想法是为了明确 API 方法可以返回不存在的值,并强制调用者意识到这一点并处理它。

当然,如果此方法返回 null 而不是Optional,您仍然会得到 NPE,但这是一个巨大的设计问题。返回Optional的方法应该返回Optional(存在或不存在),而不是null。

在 OO 语言中,使用对象的方法而不是静态方法来访问对象的状态要自然得多。

关于java - 为什么 guava/java 使用 possible.isPresent() 而不是Optional.isPresent(possible)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27089048/

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