gpt4 book ai didi

java - 用于与 null 进行比较的局部变量

转载 作者:行者123 更新时间:2023-11-30 09:01:29 25 4
gpt4 key购买 nike

我为自己找到了一些新的代码实践(在 guava 源代码中)。

public Set<K> keySet() {
Set<K> result = keySet;
return (result == null) ? keySet = new KeySet() : result;
}

我的问题是 - 为什么使用局部变量 resut 来与 null 进行比较?有什么好处吗?

不一样吗

 public Set<K> keySet() {
return (keySet== null) ? keySet = new KeySet() : keySet;
}

最佳答案

控股keySet在局部变量中 result在以下情况下很有用:

  • keySet()契约(Contract)不允许返回null ;
  • 同时作者不想持有任何锁/同步
  • keySet可以设置为 null

想象 keySetvolatile ,在检查 keySet==null 之间可能已将引用设置为 null和 return keySet , 因此第二种方法有可能返回 null。

关于java - 用于与 null 进行比较的局部变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26392594/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com