można znaleźć kompletny kod źródłowy rodzimych metod here
Mam nadzieję, że będzie pracować dla Ciebie.
Są to metody natywne, ponieważ muszą wchodzić w interakcje z urządzeniem. Tutaj kod zależny od komputera jest napisany w języku C, który nie pochodzi z pakietu źródłowego ani z rt.jar
z lib
lokalizacji Java Runtime Environment (JRE).
Kolejny powód bycia tubylcem wynika prawdopodobnie z wydajności. Ze względu na wydajność programowania na poziomie C można poprawić, dlatego mogą napisać natywny kod w języku C.
Metody są natywne, ponieważ dotyczą danych natywnych. Metoda hashCode
zwraca wartość całkowitą zależną od wewnętrznej reprezentacji wskaźnika do obiektu na stercie. Metoda getClass
musi uzyskać dostęp do wewnętrznego vtbl
(virtual function table), który reprezentuje hierarchię klas skompilowanego programu. Żadne z nich nie jest możliwe z rdzeniem Java.
nie jest duplikatem - OP wie, czym jest natywa, ale chce wiedzieć, dlaczego są dokładnie te dwie metody. – Alnitak
hashCode() jest natywny, ponieważ sposób przechowywania danych może się różnić w różnych systemach operacyjnych. Nie jestem pewien, dlaczego getClass() jest; prawdopodobnie z powodu różnych implementacji polimorfizmu. – Vulcan
@Vulcan getClass() jest ostateczny, więc nie można go przesłonić i przerwać system typów. – EJP