0

我正在寻找一个短语,它在将空值传递给对象之前强制检查空值,然后在调用对象时,在对象内的方法中检查的第一件事是检查空指针异常.

之前遇到过这个词

你能帮忙吗?

对不起,我没有澄清我的问题。

我之前在一本书中遇到过,他们提到了一个短语,在调用方法之前检查在哪里防止空指针传递,并且在被调用方法中完成的第一件事是检查空指针。

4

4 回答 4

6

防御性编码是一种实践。

public void go(String s)  
{  
    if(null == s)  
        //do something
    else
    //  normal execution.
}  
于 2013-05-23T22:39:41.813 回答
2

当您有一些未初始化的对象时,会出现空指针异常(未初始化对象的默认值为空)。

也就是说,如果要检查对象是否为空,则应使用比较运算符。喜欢:

if (object == null) {
    // do something
}
于 2013-05-23T22:40:59.607 回答
1

在创建对象之前,您可以使用单词检查参数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声明。

于 2013-05-23T22:41:30.117 回答
1

理论上,Object 的任何实例方法都可以工作,尽管没有一个因便宜而出众的方法。最有可能的两个是theReference.hashCode()and theReference.equals(theReference)(或者可能是theReference.equals(null).Java 标准要求评估任何方法调用的效果,因此编译器或 JITC 不会消除这些调用。

于 2013-05-23T22:44:29.510 回答