Ketika program Java sedang berjalan, sistem Java selalu melakukan identifikasi jenis runtime yang disebut semua objek, RTTI yang disebut SO. Informasi ini mencatat kelas masing -masing objek. Mesin virtual biasanya menggunakan metode yang benar untuk menjalankan informasi jenis yang akan dieksekusi. Kelas kelas merangkum keadaan objek dan antarmuka. Saat kelas pemuatan dimuat, objek tipe kelas secara otomatis dibuat.
Ringkasan sederhana adalah sebagai berikut:
Kelas kelas juga merupakan kelas, tetapi namanya mirip dengan kata kunci kelas. Java adalah bahasa yang sensitif.
Konten kelas kelas adalah informasi jenis kelas yang Anda buat.
Objek kelas kelas tidak dapat dibuat dengan cara baru () seperti kelas biasa.
Peran kelas kelas adalah untuk menyediakan atau mendapatkan informasi tipe yang menyediakan atau mendapatkan objek tertentu selama runtime, yang mirip dengan fungsi typeid () di C ++. Informasi ini juga dapat digunakan untuk refleksi.
1. Prinsip kelas kelas
Kita semua tahu bahwa semua kelas Java mewarisi kelas objek. Kelas kelas. Kami tidak dapat menghasilkan objek kelas (konstruktor bersifat pribadi), dan objek kelas kelas ini adalah untuk secara otomatis membuat objek kelas oleh mesin virtual Java ketika ditransfer, atau dihasilkan oleh metode Defineclass di loader. Objek yang kami hasilkan akan memiliki bidang untuk merekam lokasi objek objek di kelas kelas objek. Seperti yang ditunjukkan pada gambar di bawah ini:
2. Dapatkan objek kelas kelas
Metode pertama adalah fungsi gabungan kelas kelas
[Codec Class Shapes {}
Kelas obj = class.forname ("bentuk");
Metode kedua adalah menggunakan objek objek objek
Salin kode kode sebagai berikut: Class Shapes {}
bentuk s1 = bentuk baru ();
Kelas obj = s1.getClass ();
Kelas obj1 = s1.getsuperclass (); // fungsi ini adalah jenis kelas induk dari kelas bentuk
Metode ketiga adalah menggunakan jenis konstanta tipe
Salin kode kode sebagai berikut: obj = string.class;
Kelas obj1 = int.class;
Perhatikan bahwa saat menggunakan metode ini untuk menghasilkan objek kelas kelas, JVM tidak akan secara otomatis memuat kelas (seperti string). Metode lain akan membuat JVM menginisialisasi kelas ini.
3. Gunakan objek kelas kelas untuk menghasilkan instance dari kelas target
Contoh objek yang tidak akurat
Setelah mendapatkan objek kelas kelas, Anda dapat menggunakan fungsi newinstance () untuk menghasilkan instance dari kelas target. Namun, fungsi ini tidak secara langsung menghasilkan contoh kelas target, dan hanya dapat menghasilkan contoh kelas objek
Salin kode kode sebagai berikut: obj = class.forname ("bentuk");
Objek ShapesInstance = obj.newinstance ();
Gunakan kelas generalisasi untuk merujuk instance target dari jenis sabuk tipe
Salin kode kode sebagai berikut: bentuk> obj = bentuk.class;
bentuk newshape = obj.newinstance ();
Karena batas jenis, referensi objek ke sintaks kelas generalisasi tidak dapat diarahkan ke kategori lain.
Salin kode kode sebagai berikut: kelas obj1 = int.class;
Kelas <integer> obj2 = int.class;
obj1 = double.class;
//Obj2=double.class;
Namun, ada penggunaan fleksibel yang memungkinkan Anda untuk menunjuk ke subkelas kelas dasar dengan objek kelas.
Salin kode kode sebagai berikut: kelas <?
obj = number.class;
obj = double.class;
Oleh karena itu, objek kelas yang dihasilkan di bawah ini dapat menunjuk ke kelas mana pun.
Salin kode kode sebagai berikut: kelas <?> Obj = int.class;
obj = double.class;
obj = bentuk.class;
Penggunaan aneh terakhir adalah bahwa ketika Anda menggunakan sintaks generik ini untuk membangun objek kelas dasar dari objek kelas kelas yang Anda miliki, Anda harus menggunakan tata bahasa khusus berikut
Salin kode kode sebagai berikut: bentuk kelas publik {}
Class Round Extends Shapes {}
Kelas <land> rclass = round.class;
Kelas <?
// class <dapes> sclass = rclass.getSuperclass ();
Kita tahu bahwa kelas dasar putaran adalah bentuk, tetapi tidak dapat secara langsung mendeklarasikan kelas <dape> dan harus menggunakan tata bahasa khusus
Kelas <?
Di atas adalah semua isi artikel ini.