Sie können den vollständigen Quellcode der nativen Methoden here
Ich hoffe, finden dies für Sie arbeiten.
Dies sind native Methoden, weil es mit der Maschine interagieren muss. Hier wird maschinenabhängiger Code in der Sprache C geschrieben, die nicht mit dem Quellpaket oder in rt.jar
der Position lib
der Java Runtime Environment (JRE) enthalten ist.
Ein weiterer Grund für native ist möglicherweise für die Leistung. Aufgrund der C-Ebene kann die Programmierleistung verbessert werden, daher haben sie möglicherweise den nativen Code in der C-Sprache geschrieben.
Die Methoden sind nativ, da sie systemeigene Daten betreffen. Die Methode hashCode
gibt einen ganzzahligen Wert zurück, der von der internen Darstellung eines Zeigers auf ein Objekt im Heap abhängt. Die getClass
-Methode muss auf das interne vtbl
(virtual function table) zugreifen, das die Klassenhierarchie des kompilierten Programms darstellt. Bei Core Java ist beides nicht möglich.
kein Duplikat - das OP weiß, was nativ ist, will aber wissen, warum diese beiden Methoden spezifisch sind. – Alnitak
hashCode() ist nativ, da die Art und Weise, wie Daten gespeichert werden, auf unüblichen Betriebssystemen unterschiedlich sein kann. Ich bin mir nicht sicher, warum getClass() ist; möglicherweise aufgrund unterschiedlicher Implementierungen von Polymorphismus. – Vulcan
@Vulcan getClass() ist endgültig, Sie können es also nicht überschreiben und das Typsystem unterbrechen. – EJP