Rumah > Java > javaTutorial > Menggunakan mekanisme refleksi Java untuk membebankan kaedah?

Menggunakan mekanisme refleksi Java untuk membebankan kaedah?

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Lepaskan: 2024-04-15 22:54:01
asal
972 orang telah melayarinya

Mekanisme pantulan digunakan dalam Java untuk melaksanakan lebihan beban kaedah: Dapatkan kaedah melalui refleksi: Gunakan kaedah getMethod() untuk mendapatkan objek kaedah dan nyatakan nama kaedah dan jenis parameter. Kaedah panggilan: Gunakan kaedah invoke() untuk memanggil kaedah, menentukan objek pemanggil dan nilai parameter.

Menggunakan mekanisme refleksi Java untuk membebankan kaedah?

Kaedah terlebih muatan menggunakan mekanisme pantulan Java

Kaedah terlebih muatan dalam Java membolehkan penciptaan berbilang kaedah dengan nama yang sama tetapi senarai parameter yang berbeza. Kaedah terlebih beban ini boleh dipanggil semasa runtime dengan menggunakan mekanisme pantulan.

Mekanisme refleksi

Mekanisme refleksi membolehkan program untuk memeriksa dan mengubah suai kelas, kaedah dan medan pada masa jalankan. Untuk menggunakan refleksi, anda perlu menggunakan kelas dalam pakej java.lang.reflect. java.lang.reflect 包中的类。

获取方法

要获取方法,可以使用 getMethod()

Dapatkan kaedah

Untuk mendapatkan kaedah, anda boleh menggunakan kaedah getMethod() dan nyatakan nama dan jenis parameter kaedah:

Method method = Class.forName("MyClass").getMethod("myMethod", new Class<?>[] { String.class });
Salin selepas log masuk

Panggil kaedah

Apabila memanggil kaedah, anda perlu menentukan kaedah Objek pemanggil dan nilai yang akan dihantar sebagai parameter:

method.invoke(myClassObject, "myParameter");
Salin selepas log masuk

Contoh praktikal

Contoh berikut menunjukkan cara menggunakan mekanisme pantulan untuk memanggil kaedah terlebih beban: 🎜
public class MethodOverloading {
    public void myMethod(String param) {
        System.out.println("Method with String parameter: " + param);
    }

    public void myMethod(int param) {
        System.out.println("Method with int parameter: " + param);
    }

    public static void main(String[] args) {
        MethodOverloading obj = new MethodOverloading();

        Class<?> cls = obj.getClass();
        try {
            // 调用带 String 参数的方法
            Method method1 = cls.getMethod("myMethod", new Class<?>[] { String.class });
            method1.invoke(obj, "Hello");

            // 调用带 int 参数的方法
            Method method2 = cls.getMethod("myMethod", new Class<?>[] { int.class });
            method2.invoke(obj, 100);
        } catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException e) {
            e.printStackTrace();
        }
    }
}
Salin selepas log masuk
🎜🎜Output🎜🎜
Method with String parameter: Hello
Method with int parameter: 100
Salin selepas log masuk

Atas ialah kandungan terperinci Menggunakan mekanisme refleksi Java untuk membebankan kaedah?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
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
Isu terkini
Bolehkah java digunakan sebagai bahagian belakang web?
daripada 1970-01-01 08:00:00
0
0
0
Tidak dapat memasang java
daripada 1970-01-01 08:00:00
0
0
0
Pasang JAVA
daripada 1970-01-01 08:00:00
0
0
0
Bagaimanakah php melaksanakan penyulitan sha1 java?
daripada 1970-01-01 08:00:00
0
0
0
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan