Optional.of(null)会抛出NPE,我需要在调用方法之前验证null吗?

dai*_*dai 12 optional java-8

Java 8引入了Optional来处理NPE.在实际应用中,我无法理解问题.

我有方法A.

public void doSomethingA(String para) {
    Optional<String> name = Optional.of(para);
    if (name.isPresent()) {
        //do
    }
}
Run Code Online (Sandbox Code Playgroud)

但是如果para = null,它将抛出NPE.

方法B.

public void doSomethingB(String para) {
    if (para != null) {
        //do
    }
}
Run Code Online (Sandbox Code Playgroud)

如果我检查para不为空,A和B之间有什么区别.

Optional的含义在哪里.

Rol*_*and 17

使用Optional.ofNullable,如果你不确定你是否有一个值或没有,但你不想NullPointerException被抛出.

使用Optional.of如果你知道你有一个非空值,或者如果它的确定你是否NullPointerException另有抛出.

关于你的其余问题:为什么nullOptional你可能会发现以下问题有用:可选与null.Java 8中Optional的目的是什么?

您的问题也可能与以下内容有关:为什么在Optional.ofNullable上使用Optional.of?