Sobes.tech
Junior — Middle

O que acontece com o resultado do método hashCode se a classe não o sobrescrever explicitamente?

sobes.tech IA

Resposta da IA

Se a classe não substituir explicitamente o método hashCode(), será utilizada a implementação da classe Object. Nesse caso, hashCode retorna um valor inteiro que geralmente é baseado no endereço interno do objeto na memória (ou outro identificador único da JVM).

Isto significa que, para objetos diferentes, mesmo que sejam logicamente iguais, hashCode será diferente, o que pode levar a um funcionamento incorreto das estruturas de hash (por exemplo, HashMap ou HashSet), se hashCode não for sobrescrito juntamente com equals.

Exemplo:

Object obj1 = new Object();
Object obj2 = new Object();
System.out.println(obj1.hashCode()); // número único
System.out.println(obj2.hashCode()); // outro número único