


Menggabungkan Jenis Mentah dan Kaedah Generik: Akibat Tidak Dijangka
Apabila berurusan dengan jenis mentah dan kaedah generik, tingkah laku yang tidak dijangka boleh timbul. Pertimbangkan coretan kod berikut:
ArrayList<string> a = new ArrayList<string>(); String[] s = a.toArray(new String[0]);</string></string>
Kod ini berjaya disusun dalam kedua-dua JDK 1.6 dan 1.7. Walau bagaimanapun, menukar rujukan ArrayList kepada jenis mentah mengakibatkan ralat pengkompil:
ArrayList a = new ArrayList(); String[] s = a.toArray(new String[0]); // Error: String[] expected, Object[] found
Anehnya, pengkompil mentafsir kaedah generik kepadaArray sebagai Objek yang mengembalikan[] walaupun menerima String[] sebagai hujah. Ini berlawanan dengan intuisi, kerana seseorang menjangkakan kaedah itu mematuhi parameter jenisnya.
Memahami Tingkah Laku
JLS 4.8 memberi penerangan tentang tingkah laku ini:
"Jenis pembina, kaedah contoh atau medan bukan statik M daripada jenis mentah C yang tidak diwarisi daripada superclass atau superinterfacenya ialah jenis mentah yang sepadan dengan pemadaman jenisnya dalam pengisytiharan generik yang sepadan kepada C."
Dalam istilah yang lebih mudah, apabila berurusan dengan jenis mentah, pengkompil mengabaikan sebarang parameter jenis yang dikaitkan dengan kaedah atau medan. Oleh itu, jenis kaedah toArray dalam ArrayList jenis mentah ialah Object[], tanpa mengira jenis parameter T.
Tingkah laku ini melangkaui kaedah generik. Walaupun anda menggunakan generik di bahagian lain dalam kelas, merujuknya sebagai jenis mentah secara berkesan membatalkan penggunaan generik sama sekali dalam kejadian itu. Sebagai contoh, kod ini akan menghasilkan amaran yang tidak disemak:
public class MyContainer <t> { public List<string> strings() { return Arrays.asList("a", "b"); } } MyContainer container = new MyContainer(); List<string> strings = container.strings(); // Unchecked warning</string></string></t>
Kesimpulan
Apabila berurusan dengan jenis mentah dan kaedah generik, adalah penting untuk memahami bahawa menggunakan kaedah mentah mentah. jenis melumpuhkan penggunaan generik untuk contoh tertentu itu. Pastikan anda menggunakan jenis mentah dengan bijak, kerana ia boleh membawa kepada tingkah laku yang mengelirukan dan tidak dijangka.
Atas ialah kandungan terperinci Mengapakah menggunakan jenis mentah dengan kaedah generik dalam Java membawa kepada kelakuan jenis yang tidak dijangka?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Artikel ini membincangkan menggunakan Maven dan Gradle untuk Pengurusan Projek Java, membina automasi, dan resolusi pergantungan, membandingkan pendekatan dan strategi pengoptimuman mereka.

Artikel ini membincangkan membuat dan menggunakan perpustakaan Java tersuai (fail balang) dengan pengurusan versi dan pergantungan yang betul, menggunakan alat seperti Maven dan Gradle.

Artikel ini membincangkan pelaksanaan caching pelbagai peringkat di Java menggunakan kafein dan cache jambu untuk meningkatkan prestasi aplikasi. Ia meliputi persediaan, integrasi, dan faedah prestasi, bersama -sama dengan Pengurusan Dasar Konfigurasi dan Pengusiran PRA Terbaik

Artikel ini membincangkan menggunakan JPA untuk pemetaan objek-relasi dengan ciri-ciri canggih seperti caching dan pemuatan malas. Ia meliputi persediaan, pemetaan entiti, dan amalan terbaik untuk mengoptimumkan prestasi sambil menonjolkan potensi perangkap. [159 aksara]

Kelas kelas Java melibatkan pemuatan, menghubungkan, dan memulakan kelas menggunakan sistem hierarki dengan bootstrap, lanjutan, dan pemuat kelas aplikasi. Model delegasi induk memastikan kelas teras dimuatkan dahulu, yang mempengaruhi LOA kelas tersuai

Artikel ini menerangkan Java's Remote Method Invocation (RMI) untuk membina aplikasi yang diedarkan. IT memperincikan definisi antara muka, pelaksanaan, persediaan pendaftaran, dan penyerahan klien, menangani cabaran seperti isu rangkaian dan keselamatan.

Artikel ini memperincikan API soket Java untuk komunikasi rangkaian, yang meliputi persediaan pelanggan-pelayan, pengendalian data, dan pertimbangan penting seperti pengurusan sumber, pengendalian ralat, dan keselamatan. Ia juga meneroka teknik pengoptimuman prestasi, i

Butiran artikel ini mewujudkan protokol rangkaian Java tersuai. Ia meliputi definisi protokol (struktur data, pembingkaian, pengendalian ralat, versi), pelaksanaan (menggunakan soket), serialisasi data, dan amalan terbaik (kecekapan, keselamatan, mainta


Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Dreamweaver CS6
Alat pembangunan web visual

DVWA
Damn Vulnerable Web App (DVWA) ialah aplikasi web PHP/MySQL yang sangat terdedah. Matlamat utamanya adalah untuk menjadi bantuan bagi profesional keselamatan untuk menguji kemahiran dan alatan mereka dalam persekitaran undang-undang, untuk membantu pembangun web lebih memahami proses mengamankan aplikasi web, dan untuk membantu guru/pelajar mengajar/belajar dalam persekitaran bilik darjah Aplikasi web keselamatan. Matlamat DVWA adalah untuk mempraktikkan beberapa kelemahan web yang paling biasa melalui antara muka yang mudah dan mudah, dengan pelbagai tahap kesukaran. Sila ambil perhatian bahawa perisian ini

Penyesuai Pelayan SAP NetWeaver untuk Eclipse
Integrasikan Eclipse dengan pelayan aplikasi SAP NetWeaver.

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

ZendStudio 13.5.1 Mac
Persekitaran pembangunan bersepadu PHP yang berkuasa