Kami telah bercakap tentang fakta bahawa kelas adalah jenis data yang kompleks. Sekarang mari kita bercakap sedikit tentang bahagian lain kelas — cara kelas dikendalikan oleh mesin Java. Ingat bahawa dalam Java semuanya adalah objek, walaupun kelas. Kelas ialah objek. Adakah itu mengejutkan anda? Kemudian mari kita teruskan.
Memuatkan kelas ke dalam ingatan
Sebenarnya, apabila kelas dimuatkan ke dalam ingatan, tiga "objek" khas dicipta:

Penerangan ringkas ilustrasi:
segi empat tepat kuning:
Fail kod disimpan pada cakera sebagai fail dengan sambungan ".class". Ia mengandungi maklumat tentang kelas, medan dan kaedahnya, serta kod sumber kaedah yang disusun menjadi kod bait.
segi empat tepat jingga:
Apabila mesin Java memuatkan kelas ke dalam memori, ia menyusun kod bait ke dalam kod mesin khusus untuk pemproses dan sistem pengendalian komputer. Hanya mesin Java yang mempunyai akses kepada kod mesin ini. Sebagai pengaturcara Java, kami tidak mempunyai akses kepadanya.
segi empat tepat hijau:
Mesin Java mencipta objek yang mengandungi semua pembolehubah statik dan kaedah kelas. Anda mengakses "objek" ini menggunakan nama kelas.
Sebagai contoh, apabila anda menulis , anda merujuk kepada pembolehubah statik yang terletak di dalam kelas. Objek ini ialah segi empat tepat hijau kami. Dan di situlah pembolehubah statik disimpan.java.lang.Math.PI
PI
java.lang.Math
java.lang.Math
PI
segi empat tepat biru:
Apabila mesin Java memuatkan kod kelas ke dalam ingatan, ia mencipta java.lang.Class
objek khas, yang menyimpan maklumat tentang kelas yang dimuatkan: namanya, nama kaedah, nama medan dan jenis, dsb.
Nama "Kelas" boleh mengelirukan sedikit. Lebih masuk akal untuk memanggilnya ClassInfo, kerana kelas ini hanya menyimpan beberapa maklumat tentang kelas yang dimuatkan.
Anda boleh mendapatkan objek Kelas untuk sebarang jenis menggunakan arahan seperti ini:
Class name = ClassName.class;
Contoh:
Kod | Catatan |
---|---|
|
Dapatkan Class objek dengan maklumat tentang String kelas |
|
Dapatkan Class objek dengan maklumat tentang Object kelas |
|
Dapatkan Class objek dengan maklumat tentang Integer kelas |
|
Dapatkan Class objek dengan maklumat tentang int jenis |
|
Dapatkan Class objek dengan maklumat tentang void jenis |
Anda juga boleh mendapatkan rujukan kepada objek penerangan kelas daripada sebarang objek, kerana setiap objek mempunyai kaedah getClass()
, yang diwarisi daripada Object
kelas.
Contoh:
Kod | Catatan |
---|---|
|
Objek yang sama sepertiString.class |
|
Objek yang sama sepertiInteger.class |
|
Objek yang sama sepertiBoolean.class |