Kami telah berbicara tentang fakta bahwa kelas adalah tipe data yang kompleks. Sekarang mari kita bicara sedikit tentang sisi lain dari class — bagaimana class ditangani oleh mesin Java. Ingatlah bahwa di Jawa semuanya adalah objek, bahkan kelas. Kelas adalah objek. Apakah itu mengejutkan Anda? Lalu mari kita lanjutkan.
Memuat kelas ke dalam memori
Sebenarnya, ketika sebuah kelas dimuat ke dalam memori, tiga "objek" khusus dibuat:
Deskripsi singkat ilustrasi:
persegi panjang kuning:
File kode disimpan di disk sebagai file dengan ekstensi ".class". Ini berisi informasi tentang kelas, bidang dan metodenya, serta kode sumber metode yang dikompilasi menjadi bytecode.
persegi panjang oranye:
Saat mesin Java memuat kelas ke dalam memori, ia mengkompilasi bytecode menjadi kode mesin khusus untuk prosesor dan sistem operasi komputer. Hanya mesin Java yang memiliki akses ke kode mesin ini. Sebagai pemrogram Java, kami tidak memiliki akses ke sana.
persegi panjang hijau:
Mesin Java membuat objek yang berisi semua variabel statis dan metode kelas. Anda mengakses "objek" ini menggunakan nama kelas.
Misalnya, saat Anda menulis , Anda merujuk ke variabel statis yang terletak di kelas. Objek ini adalah persegi panjang hijau kita. Dan di situlah variabel statis disimpan.java.lang.Math.PI
PI
java.lang.Math
java.lang.Math
PI
persegi panjang biru:
Ketika mesin Java memuat kode kelas ke dalam memori, ia membuat java.lang.Class
objek khusus, yang menyimpan informasi tentang kelas yang dimuat: namanya, nama metode, nama dan jenis bidang, dll.
Nama "Kelas" bisa sedikit membingungkan. Akan lebih masuk akal untuk menyebutnya ClassInfo, karena kelas ini hanya menyimpan beberapa informasi tentang kelas yang dimuat.
Anda bisa mendapatkan objek Kelas untuk semua jenis menggunakan perintah seperti ini:
Class name = ClassName.class;
Contoh:
Kode | Catatan |
---|---|
|
Dapatkan Class objek dengan informasi tentang String kelas |
|
Dapatkan Class objek dengan informasi tentang Object kelas |
|
Dapatkan Class objek dengan informasi tentang Integer kelas |
|
Dapatkan Class objek dengan informasi tentang int jenisnya |
|
Dapatkan Class objek dengan informasi tentang void jenisnya |
Anda juga bisa mendapatkan referensi ke objek deskripsi kelas dari objek apa pun, karena setiap objek memiliki metode getClass()
yang diwarisi dari Object
kelas.
Contoh:
Kode | Catatan |
---|---|
|
Objek yang sama denganString.class |
|
Objek yang sama denganInteger.class |
|
Objek yang sama denganBoolean.class |
GO TO FULL VERSION