Java 8可选如何定义NullPointerException的错误消息

Java 8可选如何定义NullPointerException的错误消息,java,nullpointerexception,java-8,optional,Java,Nullpointerexception,Java 8,Optional,在Java8之前,我们通常必须执行以下操作,才能快速失败Null值 Objects.requireNonNull(pointer, "Your Error Message"); 根据Java8文档,如果传递的参数为null,Optional.of将抛出NullPointerException // Optional.of - throws NullPointerException if passed parameter is null Optional<Integer> b = O

在Java8之前,我们通常必须执行以下操作,才能快速失败
Null

Objects.requireNonNull(pointer, "Your Error Message");
根据Java8文档,如果传递的参数为null,
Optional.of
将抛出
NullPointerException

// Optional.of - throws NullPointerException if passed parameter is null
Optional<Integer> b = Optional.of(value2);
//Optional.of-如果传递的参数为null,则抛出NullPointerException
可选b=可选of(值2);

有没有办法在Java 8
Optional
中为
NullPointerException
定义错误消息?

对于
Optional
类,您始终可以编写
Optional.of(Objects.requirennoull(pointer,“message”))

,在提取值之前,通常不希望抛出任何错误。尝试检索值时可以使用:

Optional.ofNullable(pointer)
        ...
        ...
        .orElseThrow(() -> new NullPointerException("message"));

可选的
类并不是要取代现有的方法来执行特定的空检查。

@4castle是的,我明白了,谢谢。但仍然有点不满意,为什么他们将“.of”方法放在NullPointerException的可选类中失败很快。至少,它们会为错误消息提供可选参数,如“Objects.requirennull”。当我说“fail last”时,我的意思是你应该推迟抛出任何错误,直到你试图从最后的
可选
中检索值为止。您可以选择使用
Optional.ofNullable
也可以。他们没有这样做,因为参数检查实际上不是
Optional
的工作-它模拟了“可选性”(专门将其与“可空性”区分开来)。如果您想强制执行某些约定,请在进入optional之前执行,否则当您要求optional从其显式不可为null的方法生成一个实例时,optional将失败。如果您不能完全确定,您不应该真正调用
可选。of
。@pvg非常感谢您的评论,其中包含解释和建议。