相关疑难解决方法(0)

将实例字段分配给局部变量

这是来自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

16
推荐指数
2
解决办法
680
查看次数

为什么方法参数重新分配给局部变量?

在查看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

15
推荐指数
1
解决办法
857
查看次数

标签 统计

java ×2