Jeśli nie zastąpisz metody hashCode
, jaka jest domyślna implementacja hashCode
?Co to jest domyślna implementacja `hashCode`?
Odpowiedz
Następnie ta klasa dziedziczy hashCode
od jednego z jej przodków. Jeśli nie nadpisuje go żaden z nich, wówczas zostanie użyty Object.hashCode.
Z docs:
O ile jest to uzasadnione i praktyczny sposób hashCode określa klasa obiektu nie powraca różne liczby całkowite dla różnych przedmiotów. (Jest to zwykle realizowane poprzez przekształcenie wewnętrzny adres obiektu do liczby całkowitej, ale technika ta realizacja nie jest wymagane przez język programowania JavaTM.)
Więc domyślna implementacja jest JVM specyficzne
Dziękuję, tak. Jak wygląda wygląd 'Object.hashCode()? –
@JohnThreepwood to szczegół implementacji, musisz zaadresować to do dokumentów JVM. –
http://stackoverflow.com/a/32454673/6785908 –
obiektu. hashcode() jest natywną metodą.
public native int hashCode();
Oznacza to, że jest to realizowane w kodzie konkretnej platformy i jest narażony jako native metody.
kodza samo będzie skompilowany kod i nie są dostępne withing JDK
tym existing question może dostarczyć więcej informacji.
Domyślnie metody, które nie są przerywane, są dziedziczone po Object
.
Jeśli przyjrzeć się dokumentacji tej metody, zwrócone wartości to "[...] distinct integers for distinct objects. (This is typically implemented by converting the internal address of the object into an integer [...])
". Metoda z zakresu java.lang.Object
jest zadeklarowana jako natywna, co oznacza, że implementacja jest zapewniona przez maszynę JVM i może się różnić w zależności od środowiska wykonawczego.
Mały przykład:
Object o1 = new Object();
Object o2 = new Object();
System.out.println(o1.hashCode());
System.out.println(o2.hashCode());
drukuje (używając mojego JDK6):
1660187542
516992923
Rozmiar A reprezentacja wartości hashCode()
jest stosowany w realizacji domyślnej toString()
przy okazji: Bieganie System.out.println(o1)
drukuje coś w rodzaju:
[email protected]
Dobre wyjaśnienie. – chipmunk
- 1. Co to jest "domyślna" implementacja metody zdefiniowanej w interfejsie?
- 2. Implementacja Java HashTable # hashCode() jest zepsuta?
- 3. Co to jest konkretna implementacja?
- 4. Domyślna implementacja ListView WłaścicielDod
- 5. Dlaczego domyślna Object.toString() zwraca reprezentację szesnastkową hashCode?
- 6. Co to jest domyślna funkcja TokenLifespan GeneratePasswordResetTokenAsync i GenerateUserTokenAsync
- 7. Co to jest domyślna wartość konfiguracji git core.askpass?
- 8. co to jest implementacja protokołu Ember setInterval i clearInterval
- 9. Co to jest "implementacja" w zależnościach Kotlin Gradle?
- 10. Przesłanianie hashCode() - czy to wystarczy?
- 11. Dlaczego domyślna implementacja łańcucha Haskella jest połączoną listą znaków?
- 12. Co to jest Serializable? Co to znaczy?
- 13. Co to jest praca Spark?
- 14. Co to jest "usuń to"?
- 15. Czy to jest poprawna implementacja quicksort?
- 16. Czy jest to implementacja kombinatora fixpoint?
- 17. Co to jest Pagel?
- 18. Co to jest _GLOBAL_OFFSET_TABLE?
- 19. Co to jest "android.R.layout.simple_list_item_1"?
- 20. Co to jest DetailsView.EnableModelValidation?
- 21. Co to jest NSPathStore2?
- 22. Co to jest czasownik = "*"?
- 23. Co to jest Postgresql_psycopg2?
- 24. Co to jest ?
- 25. co to jest .netrwhist?
- 26. co to jest Microsoft.Practices.EnterpriseLibrary.Data
- 27. Co to jest CGVector?
- 28. Co to jest $ {project.licensePath}?
- 29. co to jest alloc.h?
- 30. Co to jest PurpleEventCallback?
Informacje o domyślnej impozycji ementation można przeczytać [this] (http://blogs.tedneward.com/CommentView,guid,eca26c5e-307c-4b7c-931b-2eaf5b176e98.aspx) – CAMOBAP
domyślna implementacja jest specyficzna dla JVM, ale generalnie zwraca 'Return Objects. hash (this.field1, this.field2, this.field3, itp.); ' – NoName