同一类的两个对象是否具有相同的哈希码并被视为相等?

4

我想创建一个类哈希图,比如(Object.class)。我想知道Object.class是否被认为等同于另一个Object.class?

是否可能有另一个Object.class实例,导致它具有不同的哈希码?

3个回答

5
在同一个类加载器中,字面上的Object.class将始终返回相同的引用。
来自JLS 15.8.2节
“类文字表达式将计算为当前实例的类的定义类加载器定义的命名类型(或void)的Class对象。”
请注意引用中的定冠词“the” - 在同一类加载器中,任何特定类只有一个Class对象。
因此,是的,你会得到相同的哈希码 - 因为你将有两个对同一对象的引用。

2

在给定的类加载器中,对于每个已加载的类,都有一个类型为Class的单个对象。

只要x1x2具有相同的动态类型,x1.getClass()x2.getClass()返回相同的引用。


2

由于我们每个类只有一个.class对象的实例,所有引用都将指向此相同的对象(Object.class的对象),因此将具有相同的哈希码(因为基础对象相同)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接