Metode getClass(), objek Class, dan pengantar Refleksi - 1

"Hai, Amigo!"

"Sekarang saatnya untuk acara utama. Kita akan berkenalan dengan kelas Kelas dan menyentuh Refleksi.
Seperti yang mungkin sudah Anda sadari, semua yang ada di Java adalah objek. Dan apa yang dibutuhkan objek? Apa yang dimiliki setiap objek yang mendefinisikan apa itu semua tentang?"

"Kelas!"

"Benar! Kerja bagus. Setiap objek memiliki kelas. Tapi kembali ke objek... Beberapa objek seluruhnya berisi entitas, sementara yang lain hanya membantu mengelolanya."

"Jenis terakhir ini termasuk FileOutputStream dan Thread . Saat Anda membuat objek Thread , thread baru tidak dibuat. Thread dibuat oleh mesin virtual Java setelah metode start() dipanggil. Objek ini hanya membantu mengelola proses."

"Sama dengan FileOutputStream : file disimpan di disk, dan OS mengelola penyimpanan dan akses. Tapi kita bisa berinteraksi dengannya melalui objek File, sekali lagi dengan bantuan mesin virtual Java."

"Ya, aku sudah mengerti itu."

"Jadi, ada kelas khusus bernama Kelas untuk berinteraksi dengan kelas."

"Itu tidak sulit ditebak."

"Ya. Setiap kali mesin virtual Java memuat kelas baru ke dalam memori, ia membuat objek Kelas, yang dapat Anda gunakan untuk mendapatkan informasi spesifik tentang kelas yang dimuat."

"Setiap kelas dan objek dikaitkan dengan « Objek kelas »."

Contoh Keterangan
Class clazz = Integer.class;
Mendapatkan objek Class kelas Integer.
Class clazz = int.class;
Mendapatkan objek Kelas kelas int.
Class clazz = "123".getClass();
Mendapat objek Kelas objek String.
Class clazz = new Object().getClass();
Mendapat objek Kelas objek Objek.

"Wow! Menarik sekali!"

"Apakah Anda ingat bahwa kelas kata adalah kata kunci di Jawa dan tidak dapat digunakan sebagai nama variabel?"

"Oh ya, aku tahu, aku tahu. Aku hanya lupa."

"Apakah Anda sudah menggunakan objek Kelas di suatu tempat?"

"Ya, kami menggunakannya ketika kami menulis penerapan metode equals kami sendiri."

"Ya, Anda bisa menggunakan metode getClass() untuk menguji apakah objek memiliki kelas yang sama."

"Dan apa yang bisa kamu lakukan dengan benda ini?"

"Yah, banyak hal:"

kode jawa Keterangan
Class s = int.class;
String name = s.getName();
Mendapatkan nama kelas.
Class s = Class.forName("java.lang.String");
Mendapat kelas dengan nama.
Object o1 = String.valueOf(1);
Object o2 = 123 + "T";
o1.getClass() == o2.getClass();
Membandingkan kelas objek.

"Menarik, tapi tidak sekeren yang kukira."

"Mau yang keren? Ada juga RefleksiRefleksi sangat keren."

"Apa itu Refleksi ?"

" Refleksi adalah kemampuan kelas untuk mendapatkan informasi tentang dirinya sendiri. Java memiliki kelas khusus:  Field dan Method , yang mirip dengan kelas Class untuk kelas. Sama seperti objek Class memungkinkan Anda mendapatkan informasi tentang suatu kelas, objek Field memberikan informasi tentang suatu bidang , dan objek Metode menyediakan informasi tentang suatu metode. Dan lihat apa yang dapat Anda lakukan dengannya:"

kode jawa Keterangan
Class[] interfaces = List.class.getInterfaces();
Mendapat daftar objek Kelas untuk antarmuka kelas Daftar
Class parent = String.class.getSuperclass();
Mendapatkan objek Kelas dari kelas induk kelas String
Method[] methods = List.class.getMethods();
Mendapat daftar metode kelas Daftar
String s = String.class.newInstance();
Membuat String baru
String s = String.class.newInstance();
Method m = String.class.getMethod("length");
int length = (int) m.invoke(s)
Mendapatkan metode panjang kelas String dan memanggilnya di String s

"Wow! Nah, itu benar-benar keren!"