Tôi không thể hiểu văn bản sau ... Nó có nghĩa là nó <clinit>
dành cho các hàm tạo trống? Tại sao lại quan trọng phải có hai phiên bản khác nhau?
https://docs.oracle.com/javase/specs/jvms/se7/html/jvms-2.html
2.9. Special Methods
Ở cấp độ của máy ảo Java, mọi phương thức khởi tạo (§2.12) xuất hiện như một phương thức khởi tạo thể hiện có tên đặc biệt
<init>
. Tên này được cung cấp bởi một trình biên dịch. Bởi vì tên<init>
không phải là một định danh hợp lệ, nó không thể được sử dụng trực tiếp trong một chương trình được viết bằng ngôn ngữ lập trình Java. Các phương thức khởi tạo phiên bản chỉ có thể được gọi trong máy ảo Java bằng lệnh gọi đặc biệt và chúng chỉ có thể được gọi trên các cá thể lớp chưa được khởi tạo. Một phương thức khởi tạo thể hiện nhận quyền truy cập (§2.7.4) của phương thức khởi tạo mà từ đó nó được dẫn xuất.Một lớp hoặc giao diện có nhiều nhất một phương thức khởi tạo lớp hoặc giao diện và được khởi tạo (§2.17.4) bằng cách gọi phương thức đó. Phương thức khởi tạo của một lớp hoặc giao diện là tĩnh và không có đối số. Nó có cái tên đặc biệt
<clinit>
. Tên này được cung cấp bởi một trình biên dịch. Bởi vì tên<clinit>
không phải là một định danh hợp lệ, nó không thể được sử dụng trực tiếp trong một chương trình được viết bằng ngôn ngữ lập trình Java. Các phương thức khởi tạo lớp và giao diện được gọi ngầm bởi máy ảo Java; chúng không bao giờ được gọi trực tiếp từ bất kỳ máy ảo Java nào trongw2struction, mà chỉ được gọi gián tiếp như một phần của quá trình khởi tạo lớp.
CL
?