I checked the source code of Object class where I found that method declaration of getClass() was
public final native Class<?> getClass();
And the declaration of hashCode() was
public native int hashCode();
Why are these two methods native methods in the class and how can I get the source code of those methods?
You can find the complete source code of the native methods here
I hope this will work for you.
These are native methods, because it has to interact with the machine. Here machine dependent code is written in the C language, which is not coming with the source package or in
rt.jarof theliblocation of the Java Runtime Environment (JRE).One more reason for being native is possibly for the performance reasons. Due to the C level programming performance may be improved, hence they may have written the native code in the C language.
The methods are native because they concern native data. The
hashCodemethod returns an integer value dependent on the internal representation of a pointer to an object on the heap. ThegetClassmethod must access the internalvtbl(virtual function table) that represents the compiled program’s class hierarchy. Neither of these is possible with core Java.