我正在寻找一个短语,它在将空值传递给对象之前强制检查空值,然后在调用对象时,在对象内的方法中检查的第一件事是检查空指针异常.
之前遇到过这个词
你能帮忙吗?
对不起,我没有澄清我的问题。
我之前在一本书中遇到过,他们提到了一个短语,在调用方法之前检查在哪里防止空指针传递,并且在被调用方法中完成的第一件事是检查空指针。
我正在寻找一个短语,它在将空值传递给对象之前强制检查空值,然后在调用对象时,在对象内的方法中检查的第一件事是检查空指针异常.
之前遇到过这个词
你能帮忙吗?
对不起,我没有澄清我的问题。
我之前在一本书中遇到过,他们提到了一个短语,在调用方法之前检查在哪里防止空指针传递,并且在被调用方法中完成的第一件事是检查空指针。
防御性编码是一种实践。
public void go(String s)
{
if(null == s)
//do something
else
// normal execution.
}
当您有一些未初始化的对象时,会出现空指针异常(未初始化对象的默认值为空)。
也就是说,如果要检查对象是否为空,则应使用比较运算符。喜欢:
if (object == null) {
// do something
}
在创建对象之前,您可以使用单词检查参数assert
,即:
assert yourValue != null
默认情况下,断言在运行时被禁用。要启用它们,请将选项 -enableassertions
(或-ea
)传递给 JVM。
另一种可能性(从 Java 7 开始)是requireNonNull
在构造函数/方法中使用方法直接,这是构造函数的示例:
public Foo(Bar bar, Baz baz) {
this.bar = Objects.requireNonNull(bar, "bar must not be null");
this.baz = Objects.requireNonNull(baz, "baz must not be null");
}
否则,正如@Woot4Moo 所说,您可以使用if
声明。
理论上,Object 的任何实例方法都可以工作,尽管没有一个因便宜而出众的方法。最有可能的两个是theReference.hashCode()
and theReference.equals(theReference)
(或者可能是theReference.equals(null)
.Java 标准要求评估任何方法调用的效果,因此编译器或 JITC 不会消除这些调用。