Rumah >Java >javaTutorial >Bagaimana untuk Memancarkan Jenis Generik dalam Java pada Runtime?

Bagaimana untuk Memancarkan Jenis Generik dalam Java pada Runtime?

Linda Hamilton
Linda Hamiltonasal
2024-11-13 12:12:02332semak imbas

How to Instantiate Generic Types in Java at Runtime?

Menginstantiasikan Jenis Generik dalam Java

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.

Menyelesaikan Cabaran

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.

Kesimpulan

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!

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