Rumah >Java >javaTutorial >Bagaimanakah Saya Boleh Mendapatkan Literal Kelas daripada Jenis Generik di 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
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!