非无效性要求或原则

bla*_*her 7 java null

我刚读过Effective Java,该equals()方法的第五个原则是所有对象必须不相等null.本书接着说,程序员编写的一些类使用明确的测试来防范这种情况null:

public boolean equals(Object o){
    if (o == null)
        return false;
    ...
}
Run Code Online (Sandbox Code Playgroud)

根据Effective Java,上面的非空测试是不必要的.但是,我的问题是,为什么那么多程序员会测试这种非无效性要求呢?

Joo*_*kka 8

您可以通过instanceof测试来做到这一点:

public boolean equals(Object o){
    if (!(o instanceof MyObject))
        return false;
    ...
}
Run Code Online (Sandbox Code Playgroud)

null 不是任何事情的实例,所以这是有效的.