Por exemplo, se eu criar um objeto do tipo A,
A a = new A();
então a é uma referência na pilha que aponta paraa Um objeto de tipo no heap. Minha pergunta é, se eu chamar a.hashCode (), qual código hash será retornado, o código hash da referência ou o hashcode do objeto? se for o hashcode do objeto, como posso obter o hashcode da referência? Alguém poderia gentilmente me dar algumas dicas plz?
Respostas:
3 para resposta № 1hashCode()
é apenas um método não estático, como qualquer outro método não-estático. Ela é definida por A
, ou por uma classe base de A
(Object
, no pior dos casos). Tudo o que acontece é que o método é chamado na instância em questão.
Como posso obter o hashcode da referência?
Você não pode, porque isso não faz sentido.
0 para resposta № 2
Você pode obter o código hash da referência chamando:
System.identityHashCode(a);
É assim que estruturas de dados como java.util.IdentityHashMap são baseadas.