cari
RumahJavajavaTutorialBagaimanakah Saya Boleh Mendapatkan Literal Kelas daripada Jenis Generik di Java?

How Can I Get Class Literals from Generic Types in Java?

Mendapatkan Literal Kelas daripada Jenis Generik dalam Java

Jenis generik ialah ciri yang berkuasa di Java, menyediakan keselamatan jenis dan kebolehgunaan semula kod. Walau bagaimanapun, percubaan untuk mendapatkan literal kelas untuk jenis generik, seperti Senarai, menimbulkan beberapa cabaran disebabkan oleh mekanisme pemadaman jenis Java.

Jenis Pemadaman dan Implikasinya

Pemadaman jenis merujuk kepada proses di mana maklumat jenis yang terkandung dalam jenis parameter dialih keluar semasa penyusunan. Contohnya, kedua-dua Senarai dan Senaraikan hujah generiknya akan dipadamkan dan disimpan sebagai Senarai dalam kod bait.

Pemadaman ini mempunyai implikasi penting. Secara khusus, ini bermakna bahawa kelas literal untuk jenis parameter tidak wujud. Ini kerana perwakilan masa jalan jenis ini hanyalah Senarai, tanpa mengira parameter jenis tertentu.

Percubaan Gagal

Percubaan untuk mendapatkan literal kelas untuk jenis generik secara langsung, seperti List.class, menghasilkan amaran atau ralat tidak padan jenis. Menambah kad bebas (?) pada parameter jenis, seperti dalam List>.class, juga gagal disebabkan oleh ralat sintaks.

Pendekatan Alternatif

Sejak mendapatkan literal kelas untuk jenis generik adalah mustahil, pendekatan alternatif mesti digunakan. Satu pilihan ialah menggunakan @SuppressWarnings("unchecked") untuk menyekat amaran yang disebabkan oleh penggunaan List yang tidak berparameter.

Walau bagaimanapun, penyelesaian yang lebih elegan ialah menggunakan refleksi untuk mengintrospeksi kelas dan mendapatkan generiknya taip maklumat. Ini boleh dicapai menggunakan kaedah getGenericType() Medan.

Sebagai contoh, kod berikut menunjukkan mendapatkan maklumat jenis generik untuk medan jenis List:

    Field field = Foo.class.getDeclaredField("list");
    Type type = field.getGenericType();
    if (type instanceof ParameterizedType) {
        ParameterizedType pt = (ParameterizedType) type;
        Class> rawType = pt.getRawType();
        Type[] typeArguments = pt.getActualTypeArguments();
        // ... (process the generic type information) ...
    }

Kesimpulan

Walaupun mekanisme pemadaman jenis Java menghalang penciptaan langsung literal kelas untuk jenis generik, pendekatan alternatif, seperti refleksi, boleh digunakan untuk mendapatkan maklumat jenis yang diperlukan. Memahami implikasi pemadaman jenis dan menggunakan kaedah alternatif ini memastikan pengendalian jenis generik yang tepat di Jawa.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mendapatkan Literal Kelas daripada Jenis Generik di 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

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Alat panas

MinGW - GNU Minimalis untuk Windows

MinGW - GNU Minimalis untuk Windows

Projek ini dalam proses untuk dipindahkan ke osdn.net/projects/mingw, anda boleh terus mengikuti kami di sana. MinGW: Port Windows asli bagi GNU Compiler Collection (GCC), perpustakaan import yang boleh diedarkan secara bebas dan fail pengepala untuk membina aplikasi Windows asli termasuk sambungan kepada masa jalan MSVC untuk menyokong fungsi C99. Semua perisian MinGW boleh dijalankan pada platform Windows 64-bit.

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

EditPlus versi Cina retak

EditPlus versi Cina retak

Saiz kecil, penyerlahan sintaks, tidak menyokong fungsi gesaan kod

Muat turun versi mac editor Atom

Muat turun versi mac editor Atom

Editor sumber terbuka yang paling popular

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa