Pojawia się w java.lang.String.java, że Java generuje tylko kod skrótu, a następnie przechowuje go, po wywołaniu hashcode(), ale dlaczego nie po prostu dokonać haszowania w konstruktorze?Dlaczego jest generowany leniwy łańcuch Java String?
Odpowiedni kod:
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;
}
mogłyby w przeważającej części zostać umieszczone w konstruktorze.
Jeśli znajdziesz akceptowalną odpowiedź, możesz ją zaznaczyć, aby inni wiedzieli, że masz odpowiedź na swoje pytanie. –