Dengan keupayaan pengaturcaraan berorientasikan objek yang berkuasa, Java menyediakan pengaturcara dengan pelbagai mekanisme untuk membangunkan kod yang fleksibel dan cekap. Salah satu konsep yang sering diabaikan tetapi penting ialah varians. Memahami varians adalah penting untuk menguasai Java, terutamanya apabila bekerja dengan generik dan koleksi. Artikel ini melihat secara mendalam varians di Jawa, meliputi jenisnya (kovarians, kontravarian dan invarian) dan aplikasi praktikalnya.
Memahami varians
Variance merujuk kepada hubungan antara subjenis jenis yang lebih kompleks dan subjenis komponennya. Ringkasnya, ia menentukan cara hierarki jenis kelas dipelihara apabila kelas ini digunakan sebagai parameter jenis. Varian menjadi sangat penting apabila berurusan dengan generik, menyediakan rangka kerja untuk memastikan keselamatan jenis sambil membenarkan tahap fleksibiliti dalam tugasan.
Varians boleh dibahagikan kepada tiga jenis utama:
Kovarian - Jika KelasB ialah subkelas KelasA, Koleksi boleh dianggap sebagai Koleksi#🎜#subkategori🎜
Contravariant - Jika KelasB ialah subkelas KelasA, maka Koleksi boleh dianggap sebagai subkelas Koleksi. p>
Immutability - Collection dan Collection tidak mempunyai hubungan subjenis, tanpa mengira hubungan antara ClassA dan ClassB.
Mari kita mendalami setiap konsep.
Kovarian dalam Jawa
Di Jawa, kovarians dicapai dengan menggunakan kad bebas dan klausa lanjutan. Mari kita pertimbangkan contoh -
List<Animal> animals = new ArrayList<>();
<List<super Cat>cats=animals;
Salin selepas log masuk
Dalam kes ini, anda boleh menambah objek Kucing atau mana-mana contoh pada kucing, tetapi anda tidak boleh membaca daripada kucing dan menganggap hasilnya sebagai Kucing kerana ia mungkin mengandungi sebarang superjenis Kucing, termasuk Haiwan atau Objek. Oleh itu, anda boleh menulis kepada kucing, tetapi anda tidak boleh membacanya dengan cara yang selamat jenis
Ketidakbolehubah dalam Jawa
Ketidakbolehubah ialah gelagat lalai dalam Java, bermakna tiada hubungan subjenis antara Collection
dan Collection, tanpa mengira hubungan antara ClassA dan ClassB. Ini mungkin kelihatan terhad, tetapi ini penting untuk keselamatan jenis. Dalam Java, List bukan subjenis List, walaupun String ialah subjenis Objek. Ini kerana koleksi Java boleh berubah dan membenarkan perhubungan ini akan mengakibatkan ralat jenis masa jalan.
Dalam contoh di atas, walaupun String ialah subjenis Objek, List
bukan subjenis Senarai, jadi ralat kompilasi berlaku.
Dalam kaedah ini, T ialah parameter jenis terhad dan mestilah Nombor atau subjenis Nombor. Ini membolehkan kaedah beroperasi pada List
, List, List, dsb., mempamerkan kovarians
KESIMPULAN
Ringkasnya, memahami varians dalam Java adalah penting untuk menggunakan generik dan koleksi dengan berkesan. Ia membenarkan kod fleksibel sambil memastikan keselamatan jenis.
Kovarian, menggunakan kata kunci lanjutan, membenarkan subkelas menggantikan superclass, dengan itu mencapai pemprosesan objek yang lebih umum. Contravariance, sebaliknya, membolehkan superclass digantikan untuk subclass, membolehkan julat operasi yang lebih luas dilakukan pada objek yang lebih khusus.
Ketidakbolehubahan mengekalkan keselamatan jenis dengan memastikan koleksi pelbagai jenis (walaupun berkaitan melalui pewarisan) mengekalkan keunikannya dan mengelakkan ralat jenis masa jalan. 对象>字符串>对象>字符串>#🎜 🎜#
Atas ialah kandungan terperinci Varians dalam Jawa. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!
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