Walaupun kelihatan mudah untuk membuat contoh jenis generik di Jawa, ia menimbulkan cabaran yang unik. Artikel ini meneroka selok-belok tugas ini dan menyediakan penyelesaian yang komprehensif.
Pertimbangkan pengisytiharan kelas berikut:
public class Abc<T> { public T getInstanceOfT() { // Create and return an instance of type T } }
Matlamatnya adalah untuk mencipta contoh jenis generik T dalam kaedah getInstanceOfT(). Walau bagaimanapun, pemadaman maklumat jenis semasa penyusunan menjadikannya mustahil untuk menentukan jenis T sebenar daripada kod bait.
Untuk menyelesaikan masalah ini, kita perlu melepasi jenis sebenar daripada T sebagai hujah masa jalan. Ini boleh dicapai dengan mengubah suai perisytiharan kelas kepada:
public class Abc<T> { public T getInstanceOfT(Class<T> aClass) { return aClass.newInstance(); } }
Kaedah kini mengambil objek Kelas sebagai hujah, yang mewakili jenis T sebenar untuk dijadikan instantiat. Ini membolehkan kami menggunakan pantulan untuk mencipta tika jenis yang diingini.
Perhatikan bahawa pengendalian pengecualian diperlukan untuk mengurus sebarang ralat semasa instantiasi.
Menginstanti jenis generik dalam Java melibatkan penghantaran maklumat jenis sebenar semasa runtime, kerana ia tidak boleh disimpulkan daripada bytecode. Dengan menggunakan objek dan pantulan Kelas, adalah mungkin untuk mencipta tika jenis generik secara dinamik.
Atas ialah kandungan terperinci Bagaimana untuk Memancarkan Jenis Generik dalam Java pada Runtime?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!