Rumah >Java >javaTutorial >Java Generics Wildcards: Apakah Perbezaan Antara `Senarai

Java Generics Wildcards: Apakah Perbezaan Antara `Senarai

DDD
DDDasal
2024-12-29 12:25:20939semak imbas

Java Generics Wildcards: What's the Difference Between `List

Memahami Java Generics (Wildcards)

Wildcard in Java Generics

Java generik menyediakan jenis keselamatan melalui jenis parameter dan kad bebas. Kad bebas ialah pemegang tempat yang mewakili jenis yang tidak diketahui dan meningkatkan fleksibiliti dalam koleksi.

Perbezaan antara Senarai dan Senarai

  • Senarai (Kad Liar Terikat Atas): Menunjukkan bahawa kad bebas boleh memegang mana-mana subkelas atau jenis T yang ditentukan. Ia membenarkan anda membaca daripada senarai tetapi tidak menulis kepadanya.
  • Senarai (Lower Bound Wildcard): Menentukan bahawa wildcard boleh memegang mana-mana superclass atau jenis T yang ditentukan. Ia membenarkan anda menambah elemen pada senarai tetapi tidak membaca daripadanya.

Kad Liar Sempadan lwn. Tidak Sempadan

  • Terhad Kad liar: Hadkan jenis elemen yang boleh berada dalam koleksi menggunakan sempadan atas (? memanjangkan T) atau sempadan bawah (? super T).
  • Kad liar Tanpa Sempadan: Mewakili sebarang jenis, serupa dengan .

Contoh:

List<? super Animal> animals = new ArrayList<Dog>();  // Upper Bounded Wildcard
animals.add(new Dog()); // Allowed
Dog animal = animals.get(0); // Not allowed

List<? extends Animal> dogs = new ArrayList<Dog>(); // Lower Bounded Wildcard
dogs.add(new Animal()); // Not allowed
Animal dog = dogs.get(0);  // Allowed

Kesimpulan:

Wildcard dalam generik Java memberikan fleksibiliti dalam menangani koleksi jenis yang tidak diketahui. Kad bebas sempadan atas menentukan subkelas, manakala kad bebas sempadan bawah menentukan kelas besar. Kad bebas tanpa sempadan mewakili sebarang jenis. Memahami konsep ini adalah penting untuk penggunaan generik yang berkesan dalam pengaturcaraan Java.

Atas ialah kandungan terperinci Java Generics Wildcards: Apakah Perbezaan Antara `Senarai. 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