JDK中的java代码样式问题,例如if((t=table)!=null)

JDK中的java代码样式问题,例如if((t=table)!=null),java,Java,在检查JDK中的源代码时,我一直面临一个让我困惑的问题。 下面是ConcurrentHashMap的代码片段。 为什么不直接使用表格变量?而是将其分配给tlocal变量。这是java中推荐的样式吗 public boolean containsValue(Object value) { if (value == null) throw new NullPointerException(); Node<K,V>[] t;

在检查JDK中的源代码时,我一直面临一个让我困惑的问题。 下面是ConcurrentHashMap的代码片段。 为什么不直接使用表格变量?而是将其分配给tlocal变量。这是java中推荐的样式吗

public boolean containsValue(Object value) {
        if (value == null)
            throw new NullPointerException();
        Node<K,V>[] t;
        if ((**t** = **table**) != null) {
            Traverser<K,V> it = new Traverser<K,V>(**t**, **t**.length, 0, t.length);
            for (Node<K,V> p; (p = it.advance()) != null; ) {
                V v;
                if ((v = p.val) == value || (v != null && value.equals(v)))
                    return true;
            }
        }
        return false;
    }
public boolean containsValue(对象值){
如果(值==null)
抛出新的NullPointerException();
节点[]t;
如果((**t**=**table**)!=null){
遍历器it=新遍历器(**t**,**t**.length,0,t.length);
对于(节点p;(p=it.advance())!=null;){
V V;
如果((v=p.val)==value | |(v!=null&&value.equals(v)))
返回true;
}
}
返回false;
}

如果正在运行多个线程,则另一个线程可能会更改
,并通过该方法在中途变为null。但是
t
不能在其他地方更改,因为它只存在于该方法中。这是一种避免可能的异常的方法。

如果您正在运行多个线程,那么
表可能会被另一个线程更改,并在方法的中途变为null。但是
t
不能在其他地方更改,因为它只存在于该方法中。这是一种避免可能出现异常的方法。

如果您正在运行多个线程,则另一个线程可能会更改
,并通过该方法部分变为空。但是
t
不能。这是避免异常的一种可能方法。如果您正在运行多个线程,则
可能会被另一个线程更改,并在方法的中途变为null。但是
t
不能。这是避免异常的一种可能方法。