Bạn có thể tìm thấy toàn bộ mã nguồn của các phương pháp tự nhiên here
Tôi hy vọng điều này sẽ làm việc cho bạn.
Đây là những phương pháp gốc, vì nó phải tương tác với máy. Ở đây mã máy phụ thuộc được viết bằng ngôn ngữ C, không có trong gói nguồn hoặc trong rt.jar
của vị trí lib
của Java Runtime Environment (JRE).
Một lý do nữa để trở thành người bản địa có thể là vì lý do hiệu suất. Do hiệu suất lập trình cấp C có thể được cải thiện, do đó họ có thể đã viết mã gốc bằng ngôn ngữ C.
Các phương pháp có nguồn gốc vì chúng liên quan đến dữ liệu gốc. Phương thức hashCode
trả về một giá trị số nguyên phụ thuộc vào biểu diễn bên trong của một con trỏ tới một đối tượng trên heap. Phương pháp getClass
phải truy cập vào nội bộ vtbl
(virtual function table) đại diện cho phân cấp lớp của chương trình đã biên dịch. Không thể thực hiện điều này với Java lõi.
Nguồn
2012-05-14 09:07:28
không trùng lặp - OP biết nội dung gốc là gì, nhưng muốn biết _why_ hai phương pháp này cụ thể là gì. – Alnitak
hashCode() có nguồn gốc vì cách thức dữ liệu được lưu trữ có thể khác nhau trên các hệ điều hành không giống nhau. Tôi không chắc chắn tại sao getClass() là mặc dù; có thể do sự triển khai khác nhau của đa hình. – Vulcan
@Vulcan getClass() là cuối cùng, do đó bạn không thể ghi đè lên và phá vỡ hệ thống kiểu. – EJP