首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >hashCode of a AtomicBoolean是什么?

hashCode of a AtomicBoolean是什么?
EN

Stack Overflow用户
提问于 2017-01-03 18:04:02
回答 4查看 185关注 0票数 0

我在官方文件里找不到任何信息。我知道Boolean.hashCode(boolean b)返回真和假的两个素数1231和1237。我希望在AtomicBoolean中有一个类似的实现。但是在反编译的类文件中,它似乎调用了public native int hashCode(); of Object -这是否意味着它将返回内存位置?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2017-01-03 18:09:44

包装摘要告诉我们为什么hashCode没有被AtomicBoolean覆盖。

原子类不是java.lang.Integer和相关类的通用替代品。它们没有定义equalshashCodecompareTo等方法。(因为原子变量预期会发生变异,所以它们是哈希表键的糟糕选择。)

是否意味着它将返回内存位置?

这取决于您使用的JVM,但是是的,它通常是从内存地址派生的。其他JVM可能只使用一个随机数。

票数 3
EN

Stack Overflow用户

发布于 2017-01-03 18:09:21

AtomicBoolean不覆盖hashCode (或等于),因此它继承了默认的对象行为。

这其实很有道理。hashCode的主要用例是让对象成为散列映射的键,但它是一旦钥匙在地图上变异就很危险。由于AtomicBoolean的主要属性是它的可变性,这使得它成为HashMap密钥的坏候选。

换句话说:如果您需要它成为一个HashMap密钥,就不应该对它进行变异,如果您不打算对它进行变异,那么您就不应该使用AtomicBoolean。

票数 2
EN

Stack Overflow用户

发布于 2017-01-03 18:07:52

AtomicBoolean不覆盖hashCode() (或equals(Object) )方法。它使用来自java.lang.Object的默认实现。虽然JLS没有指定它,但这个实现通常只返回表示为int的对象的内部地址。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41449690

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档