0

例如,如果我创建一个 A 类型的对象,

A a = new A();

那么 a 是 Stack 上的一个引用,它指向堆上的 A 类型对象。我的问题是,如果我调用a.hashCode(),会返回哪个hashcode,是引用的hashcode还是对象的hashcode?如果它是对象的哈希码,我如何获得引用的哈希码?有人可以给我一些建议吗?

4

2 回答 2

4

hashCode()只是一个非静态方法,就像任何其他非静态方法一样。它要么由 定义,要么由(A的基类,在最坏的情况下) 定义。所发生的只是在相关实例上调用该方法。AObject

我怎样才能得到参考的哈希码?

你不能,因为那没有意义。

于 2013-04-09T00:09:30.980 回答
1

您可以通过调用获取引用的哈希码:

System.identityHashCode(a);

这就是 java.util.IdentityHashMap 等数据结构的基础。

于 2017-08-07T17:34:15.417 回答