这个问题必须更新,因为它被标记为重复,但所有链接的问题都不完全匹配试图提出的问题:
有没有理由,Optional.of(aNullableVar)
是必需的,因为Optional.ofNullable(aNullableVar)
检查方法内部的空指针?
作为what Savior answered,目的可能就像一个保护条款:
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
有一个双重目的,用给定的非Optional
值构造null
,但如果值实际上是null
,也会失败。
它类似于做
Objects.requireNonNull(value);
// and then using value
所以没有什么能真正打破,你只是发现很久以后你用null
值创造了Optional
,当你不应该。