如果我们将Optional.of方法设为私有,并且只允许Java中的Optional.ofNullable怎么办?除了向后兼容,会有其他问题吗?

时间:2019-02-13 03:58:43

标签: java java-8 nullpointerexception null optional

此问题必须更新,因为它被标记为重复,但是所有链接的问题并不完全匹配尝试问的内容:

是否有理由要求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);
}

Optional.ofNullable在Java 8中:

public static <T> Optional<T> ofNullable(T value) {
    return value == null ? empty() : of(value);
}

1 个答案:

答案 0 :(得分:2)

Optional.of的双重作用是用给定的非{Optional值构造一个null,但如果该值实际上是{{ 1}}。

这类似于做

null

因此,什么都不会真正破灭,您将发现很长时间以后,在不应该使用的情况下使用Objects.requireNonNull(value); // and then using value 值创建了null