![](/img/trans.png)
[英]How does this work - Java 8 Optional.of and Optional.ofNullable
[英]What if we make the Optional.of method private, and only allow Optional.ofNullable in Java; would there be any problem except backwards-compatibility?
这个问题必须更新,因为它被标记为重复,但所有链接的问题并不完全匹配试图提出的问题:
是否有一个原因,即Optional.of(aNullableVar)
是必需的,因为Optional.ofNullable(aNullableVar)
检查方法内部的空指针?
正如Savior 回答的那样,目的可能就像一个保护条款:
Object object = getObject();
Optional.of(object);
System.out.println(object.toString());
它相当于:
Object object = getObject();
Objects.requireNonNull(object);
System.out.println(object.toString());
和
Object object = getObject();
if (object == null) {
throw new NullPointerException();
}
System.out.println(object.toString());
Java 8 中的 Optional.of :
public static <T> Optional<T> of(T value) {
return new Optional<>(value);
}
Java 8 中的 Optional.ofNullable:
public static <T> Optional<T> ofNullable(T value) {
return value == null ? empty() : of(value);
}
Optional.of
具有双重目的,即使用给定的非null
值构造一个Optional
,但如果该值实际上是null
,也会快速失败。
这类似于做
Objects.requireNonNull(value);
// and then using value
所以没有什么会真正中断,你会在很久以后发现你使用了一个null
值来创建你不应该使用的Optional
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.