Aparece en java.lang.String.java, que Java solo generará el código hash, y luego lo almacenará, después de una llamada a hashcode(), pero ¿por qué no simplemente hacer el código hash en el constructor?¿Por qué se genera un código hash de Java String?
El código relevante:
if (h == 0 && count > 0) {
int off = offset;
char val[] = value;
int len = count;
for (int i = 0; i < len; i++) {
h = 31*h + val[off++];
}
hash = h;
}
podría en su mayor parte se colocará en el constructor.
Si encuentra una respuesta aceptable, puede marcarla para que la gente sepa que tiene una respuesta a su pregunta. –