Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah saya boleh menggunakan Kaedah Java Generik dengan Argumen Jenis Runtime?

Bagaimanakah saya boleh menggunakan Kaedah Java Generik dengan Argumen Jenis Runtime?

Patricia Arquette
Lepaskan: 2024-12-30 20:25:10
asal
167 orang telah melayarinya

How Can I Invoke a Generic Java Method with Runtime Type Arguments?

Memanggil Kaedah Generik dengan Argumen Jenis Masa Jalan

Masalah:

Anda ingin menggunakan kaedah generik secara dinamik, menentukan jenis hujah pada masa jalan. Walau bagaimanapun, Java tidak membenarkan penyelesaian hujah jenis langsung dalam penyeruan kaedah generik.

Penyelesaian:

Untuk mencapai ini, gunakan Java refleksi:

// Get the generic method
Method<T> method = MyTestClass.class.getMethod("myGenericMethod");

// Create a type array for the type arguments
Type[] typeArguments = { new TypeReference<T>() {}.getType() };

// Make the generic method specific
Method<T> specificMethod = method.makeGenericMethod(typeArguments);

// Invoke the specific method with an instance and parameters
T result = specificMethod.invoke(myInstance, parameters);
Salin selepas log masuk

Penjelasan:

  1. Dapatkan Kaedah Generik: Gunakan getMethod() untuk mendapatkan semula kaedah generik daripada kelas.
  2. Buat Tatasusunan Jenis: Cipta Taip[] tatasusunan untuk menyimpan argumen jenis bagi kaedah generik.
  3. Jana Kaedah Khusus: Gunakan makeGenericMethod() untuk mencipta contoh kaedah baharu dengan argumen jenis yang ditentukan.
  4. Seruan: Seruan kaedah khusus menggunakan invoke() dengan contoh dan parameter.

Nota Tambahan:

  • Anda boleh menggunakan newInstance() untuk mencipta tika baharu jenis generik daripada antara muka.
  • Refleksi membenarkan penyelesaian dinamik bagi jenis argumen pada masa jalan.
  • Generik menyediakan pemeriksaan jenis masa kompilasi, tetapi pantulan membenarkan fleksibiliti dalam senario dinamik.

Atas ialah kandungan terperinci Bagaimanakah saya boleh menggunakan Kaedah Java Generik dengan Argumen Jenis Runtime?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan