Apakah Pemadaman?
- Pemadaman ialah teknik yang digunakan oleh Java untuk melaksanakan generik, memastikan keserasian ke belakang dengan versi bahasa sebelumnya.
- Semasa penyusunan, semua maklumat jenis generik *dialih keluar *(atau "dipadamkan").
2. Motivasi Menggunakan Pemadaman
Keserasian dengan kod lama:
- Pengenalan generik dalam Java (JDK 5) tidak seharusnya membatalkan kod lama.
- Reka bentuk generik diperlukan untuk memastikan kedua-dua kod generik dan bukan generik berfungsi dengan lancar.
Paksaan yang sesuai:
- Pengkompil menambah paksaan untuk memastikan keserasian jenis dengan hujah yang diberikan.
- Mengalih keluar maklumat daripada jenis generik:
- Parameter jenis wujud hanya dalam kod sumber, tetapi tidak pada masa jalan.
4. Contoh Pemadaman dalam Tindakan
class Gen<T> {
T ob;
Gen(T o) {
ob = o;
}
T getOb() {
return ob;
}
}
Salin selepas log masuk
- Kod demi pemadaman (cara pengkompil mengubahnya):
class Gen {
Object ob;
Gen(Object o) {
ob = o;
}
Object getOb() {
return ob;
}
}
Salin selepas log masuk
Nota:
- Parameter jenis digantikan dengan Objek.
- Tiada maklumat generik tersedia dalam kod yang dijana.
5. Had Pemadaman
Maklumat jenis tiada pada masa jalan:
- Jenis generik ialah mekanisme kod sumber dan tidak wujud selepas penyusunan.
Tidak boleh:
- Dapatkan jenis generik tika pada masa jalan.
- Mencipta tika jenis generik secara langsung (mis. T() baharu tidak dibenarkan).
6. Kesan Praktikal
Pemadaman menerangkan:
- Mengapa generik tidak mempunyai lebihan muatan: Kaedah dengan tandatangan yang berbeza mengikut jenis generik sahaja tidak dibenarkan.
- Mengapa tidak boleh menggunakan jenis primitif secara langsung dalam generik (cth.: Gen tidak sah; anda mesti menggunakan Gen).
Keselamatan masa kompilasi:
- Walaupun maklumat jenis dipadamkan, pengkompil menyemak keserasian jenis semasa penyusunan.
7. Kesimpulan
- Menggunakan pemadaman membenarkan generik untuk ditambahkan pada Java tanpa menjejaskan keserasian ke belakang.
- Walaupun beberapa pengehadan, generik menyediakan keselamatan jenis pada masa penyusunan, manakala kod yang dijana kekal serasi dengan versi JVM sebelumnya.
Atas ialah kandungan terperinci Pemadaman. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!