gpt4 book ai didi

Java 8 可选。为什么是 of 和 ofNullable?

转载 作者:太空狗 更新时间:2023-10-29 22:42:22 27 4
gpt4 key购买 nike

我有一个关于 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 using null is likely to cause error. A variable whose type is Optional should never itself be null; it should always point to an Optional instance.


purpose of Optional is to tackle NullPointerException exception.

旁白:只是明确指出,该选择当然会隐含地让您定义是否应在运行时抛出 NPE。虽然它不是在编译时确定的。

关于Java 8 可选。为什么是 of 和 ofNullable?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53810048/

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