JDK中的java代码样式问题,例如if((t=table)!=null)
在检查JDK中的源代码时,我一直面临一个让我困惑的问题。 下面是ConcurrentHashMap的代码片段。 为什么不直接使用表格变量?而是将其分配给tlocal变量。这是java中推荐的样式吗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;
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
不能。这是避免异常的一种可能方法。