Java - 多线程

Java - Multi Thread

清除此 post 因为这是回答

其实很简单

与其做 bar.getFoo().equals(FUBAR)NullPointerException 的风险,不如换个方式检查 FUBAR.equals(bar.getFoo())。仅此而已。

如此简单

    public boolean myMethod(final MyObject bar) {
        
        return FUBAR.equals(bar.getFoo());
        
    }

接受的答案没有错。但是,它仅适用于使用 equals() 的特定情况。如果使用任何其他 bar.getFoo() 的方法,我们将无法以相同的方式避免可能的 NullPointerException

更通用的答案是将结果存储在局部变量中。

public boolean myMethod(final MyObject bar) {
    
    Object temp = bar.getFoo(); // temp can obviously be a more specific type
    if (temp != null) {
        return temp.toString().equals(FUBAR);
    } else {
        return false;
    }
}