Rumah  >  Artikel  >  Java  >  Kaedah panggilan yang biasa digunakan dalam refleksi Java

Kaedah panggilan yang biasa digunakan dalam refleksi Java

WBOY
WBOYasal
2023-12-23 09:49:05629semak imbas

Kaedah panggilan yang biasa digunakan dalam refleksi Java

Kaedah panggilan yang biasa digunakan dalam refleksi Java memerlukan contoh kod khusus

Pengenalan:
Refleksi Java ialah ciri bahasa Java yang berkuasa, yang membolehkan kami memperoleh maklumat kelas secara dinamik dan mengendalikan kelas pada masa jalan Sifat, kaedah, pembina, dsb. . Di Jawa, dengan menggunakan refleksi, kita boleh mencapai banyak fungsi, seperti mencipta objek secara dinamik, kaedah memanggil dan mengubah suai sifat peribadi. Artikel ini akan memperkenalkan kaedah panggilan yang biasa digunakan dalam refleksi dalam Java dan memberikan contoh kod khusus.

  1. Dapatkan objek Kelas
    Sebelum menggunakan refleksi, anda perlu terlebih dahulu mendapatkan objek Kelas kelas untuk dikendalikan. Objek Kelas boleh diperolehi dalam tiga cara berikut:
    1.1 Menggunakan kaedah getClass() objek
    Contohnya, jika kita mempunyai objek bernama "contoh", kita boleh menggunakan kod berikut untuk mendapatkan objek Kelasnya:

    Class<?> clazz = example.getClass();

    1.2 Menggunakan sintaks kelas .Jika kita menggunakan nama kelas secara langsung untuk mendapatkan objek Kelas, kita boleh menggunakan sintaks berikut:

    Class<?> clazz = Example.class;

    1.3 Gunakan kaedah Class.forName()

    Jika kita hanya tahu nama kelas , kita boleh menggunakan kod berikut untuk mendapatkan objek Kelas:

    Class<?> clazz = Class.forName("com.example.Example");

  2. Buat Objek

    Gunakan refleksi untuk mencipta objek secara dinamik pada masa jalan. Objek contoh boleh dibuat dengan kod berikut:

    Example example = (Example) clazz.getDeclaredConstructor().newInstance();

    Ini mengandaikan bahawa Contoh ialah nama kelas yang ingin kita buat.

  3. Mendapatkan pembolehubah ahli kelas

    Anda boleh menggunakan refleksi untuk mendapatkan pembolehubah ahli kelas. Kod berikut menunjukkan cara mendapatkan pembolehubah ahli persendirian kelas dan mengubah suai nilainya:

    Field field = clazz.getDeclaredField("privateField");
    field.setAccessible(true);
    field.set(example, "new value");

    Dalam contoh, "privateField" ialah pembolehubah ahli persendirian Contoh kelas. Mula-mula, dapatkan objek Medan pembolehubah ahli dengan memanggil kaedah getDeclaredField(), kemudian tetapkannya supaya boleh diakses, dan akhirnya gunakan kaedah field.set() untuk mengubah suai nilainya.

  4. Kaedah panggilan

    Anda boleh menggunakan refleksi untuk memanggil kaedah kelas. Berikut ialah contoh kod yang menunjukkan cara memanggil kaedah awam kelas:

    Method method = clazz.getMethod("publicMethod", String.class);
    method.invoke(example, "parameter");

    Dalam contoh, "publicMethod" ialah kaedah awam Contoh kelas. Mula-mula, dapatkan objek Kaedah kaedah dengan memanggil kaedah getMethod() dan kemudian gunakan kaedah method.invoke() untuk menggunakan kaedah tersebut.

  5. Panggil kaedah persendirian

    Melalui refleksi, kami juga boleh memanggil kaedah persendirian kelas. Kod berikut menunjukkan cara memanggil kaedah peribadi kelas:

    Method method = clazz.getDeclaredMethod("privateMethod");
    method.setAccessible(true);
    method.invoke(example);

    Dalam contoh, "privateMethod" ialah kaedah peribadi Contoh kelas. Mula-mula, dapatkan objek Kaedah kaedah dengan memanggil kaedah getDeclaredMethod(), kemudian jadikannya boleh diakses, dan akhirnya gunakan kaedah method.invoke() untuk menggunakan kaedah tersebut.

Ringkasan:

Melalui refleksi, kita boleh mendapatkan maklumat kelas secara dinamik dan mengendalikan atribut kelas, kaedah, pembina, dsb. pada masa jalan. Artikel ini memperkenalkan kaedah panggilan yang biasa digunakan dalam refleksi dalam Java dan menyediakan contoh kod khusus. Menggunakan refleksi boleh membawa kemudahan besar kepada pembangunan kita, tetapi penggunaan refleksi yang berlebihan juga boleh menyebabkan masalah dengan kebolehbacaan dan prestasi kod, jadi kita perlu mempertimbangkan dengan teliti apabila menggunakan refleksi.

Atas ialah kandungan terperinci Kaedah panggilan yang biasa digunakan dalam refleksi Java. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn