同一个类的两个类是否具有相同的哈希码,它们被认为是相同的吗?

时间:2011-02-09 18:23:27

标签: java

我想创建类似(Object.class)的类的哈希映射。我想知道是否

Object.class被认为等于另一个Object.class?

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

3 个答案:

答案 0 :(得分:5)

文字Object.class将始终在同一个类加载器中返回相同的引用。

来自section 15.8.2 of the JLS

  

类文字求值为指定类型(或void)的Class对象,由当前实例的类的定义类加载器定义。

请注意上面引用中的定冠词(“the”) - 在同一个类加载器中,任何特定类只有一个 Class对象。

所以是的,你会得到相同的哈希码 - 因为你将有两个对同一个对象的引用。

答案 1 :(得分:2)

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

只要x1.getClass()x2.getClass()具有相同的动态类型,

x1x2就会返回相同的引用。

答案 2 :(得分:2)

由于每个类型化类只有一个.class对象的实例,所有引用都将指向同一个对象(Object.class),因此将具有相同的哈希码(因为底层对象是相同的)< / p>