这是来自JDK的HashMap类的keySet()方法.为什么作者将字段(keySet)分配给局部变量ks?
public Set<K> keySet() {
Set<K> ks;
return (ks = keySet) == null ? (keySet = new KeySet()) : ks;
}
Run Code Online (Sandbox Code Playgroud)
上面和下面有什么区别?这与线程安全有关吗?
public Set<K> keySet() {
return (keySet == null ? (keySet = new KeySet()) : keySet;
}
Run Code Online (Sandbox Code Playgroud) 在查看Java API源代码时,我经常看到方法参数被重新分配给局部变量.这为什么要这样做?
void foo(Object bar) {
Object baz = bar;
//...
}
Run Code Online (Sandbox Code Playgroud)
这是在java.util.HashMap中
public Collection<V> values() {
Collection<V> vs = values;
return (vs != null ? vs : (values = new Values()));
}
Run Code Online (Sandbox Code Playgroud) java ×2