- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
关于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/
关于https://code.google.com/p/guava-libraries/wiki/UsingAndAvoidingNullExplained据解释,guava(以及后来的 java 8
关闭。此题需要details or clarity 。目前不接受答案。 想要改进这个问题吗?通过 editing this post 添加详细信息并澄清问题. 已关闭 3 年前。 Improve th
这个问题已经有答案了: How to execute logic on Optional if not present? (14 个回答) 已关闭 5 年前。 我有以下代码块: Optional re
我有一个包含几个可选值的对象,其中可选值不为空,我想将其值作为参数传递给需要多个参数的方法。 目前我有一个代码块,如下所示: if (dealerRequest.getIsApproved().isP
有人可以解释一下Optional如何帮助我们避免NullPointerException吗? Optional op = someFunc() if(op.isPresent()) { op.g
已关闭。这个问题是 not reproducible or was caused by typos 。目前不接受答案。 这个问题是由拼写错误或无法再重现的问题引起的。虽然类似的问题可能是 on-top
查看 java.util.OptionalInt 的源代码,一个可选的 int 由一个 int value 和一个 boolean isPresent 组成。获取空可选 int 的唯一方法是通过返回
这个问题在这里已经有了答案: 'Optional.get()' without 'isPresent()' check (5 个答案) 关闭 5 年前。 由于我在访问以下代码段的 Sonar 问题中
谁能解释一下 Optional 如何帮助我们避免 NullPointerException? Optional op = someFunc() if(op.isPresent()) { op.g
我从 Google Play 开发者控制台收到以下错误消息。除了 try/catch 之外,我找不到任何可以给出空指针的东西,是吗?Geocoder.isPresent() 在 API 8 中不可用?
我该如何改变: if (pAlarms[0].getMoIdentifier().isPresent()) { Optional alarmValues = getAlarmsFromMo(p
我在 Java 中有以下代码: public class Browser { public URL back() { try { //simulate: fetch last
我的 ContentView 有两个不同的模态视图,所以我对两者都使用了 sheet(isPresented:),但似乎只显示了最后一个。我该如何解决这个问题?还是无法在 SwiftUI 中的 Vie
这个问题在这里已经有了答案: In protractor, browser.isElementPresent vs element.isPresent vs element.isElementPre
在 Java 8 中是否有更漂亮的方法来避免 isPresent 和 get? void doStuff(String someValue, Optional doIt) { if (doIt
我运行 SonarQube 来检查我的代码,我发现了一个我不理解所报告错误的情况。 我的代码是: private static final int BASE_ID = 100_000_000; pri
这个问题在这里已经有了答案: Using Java 8's Optional with Stream::flatMap (12 个答案) 关闭 6 年前。 有没有更优雅的方法可以在 Java 8 中
我刚开始使用 Protractor 编写测试。我想知道 isPresent() 和 isDisplayed() 方法之间有什么区别。 API 定义 isPresent isDisplayed 那么..
我有一个 User 和关联的有时间限制的 Role。我想知道 User 是否有特定的 UserRole 并且它未过期。我可以将用户的角色变成一个流,filter() 它和 findFirst(),给我
我在这里修改了基本代码[github] https://github.com/OpenHFT/Chronicle-Queue/blob/master/docs/How_it_works.adoc 基本
我是一名优秀的程序员,十分优秀!