gpt4 book ai didi

java - 单例意味着哈希码总是返回相同的吗?

转载 作者:行者123 更新时间:2023-12-02 07:47:35 24 4
gpt4 key购买 nike

我有两个对象,o1 和 o2 来自同一类。

如果o1.hashcode() == o2.hashcode(),我可以判断它们是同一个对象吗?

除了o1==o2之外,还有其他方式告诉单例吗?

最佳答案

如果您有该类的单个实例,则 ==equals 比较将始终返回 true

但是,不同对象的哈希码可以相等,因此仅通过具有相等的哈希码并不能保证相等。

Here是对 hashcodeequals 合约的很好的解释。

检查相等性并不足以确保您拥有单例,仅确保实例被视为相等。

如果您想要 Java 类的单个实例,最好使用静态成员和方法。

Here ,演示了几种单例方法。

编辑:正如埃默里所指出的 - 事实上,您可以覆盖 equals 以返回随机值,从而违反所需的自反性(x.equals(x) == true )。由于您无法覆盖 java 中的运算符,因此 == 是确定相同对象的唯一可靠方法。

关于java - 单例意味着哈希码总是返回相同的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12987558/

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