- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我有一个关于 Java 8 的问题 Optional ,其目的是解决 NullPointerException
异常。
问题是,让我们选择两种类型的原因是什么:
Optional.of(T value) <-----non-null value, null value will throw NPE
Optional.ofNullable(T value) <----- nullable value
因为我期望的是,当我使用时:
Optional.of(nullValue);
它不会抛出 NullPointerException
。
在一些回复后扩展了我的问题:
为什么人们会选择 Optional 而不是普通的 if-else
来进行空值检查?
最佳答案
Optional.of
的 javadoc明确地读到:
@throws NullPointerException if value is null
这就是使用 Optional.ofNullable
来处理您所期望的情况的要求,这是一小段代码:
public static <T> Optional<T> ofNullable(T value) {
return value == null ? empty() : of(value); // 'Optional.of'
}
也就是说,选择一个而不是另一个的决定仍然取决于应用程序设计,就好像您的 value
可能是 null
或不是。
在您的期望部分,这不是 Optional
的实际目的。 API 说明进一步阐明了这一点(格式化我的):
Optional
is primarily intended for use as a method return type where there is a clear need to represent "no result," and where usingnull
is likely to cause error. A variable whose type isOptional
should never itself benull
; it should always point to anOptional
instance.
purpose of Optional is to tackle NullPointerException exception.
旁白:只是明确指出,该选择当然会隐含地让您定义是否应在运行时抛出 NPE。虽然它不是在编译时确定的。
关于Java 8 可选。为什么是 of 和 ofNullable?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53810048/
我正在尝试用 Swift 编写这段 JavaScript 代码:k_combinations 到目前为止,我在 Swift 中有这个: import Foundation import Cocoa e
我是一名优秀的程序员,十分优秀!