Rumah > Java > javaTutorial > Bolehkah Kad Liar Berbilang dalam Kaedah Generik Merujuk kepada Jenis Berbeza?

Bolehkah Kad Liar Berbilang dalam Kaedah Generik Merujuk kepada Jenis Berbeza?

Linda Hamilton
Lepaskan: 2024-12-06 14:18:15
asal
717 orang telah melayarinya

Can Multiple Wildcards in Generic Methods Refer to Different Types?

Kad Liar Berbilang pada Kaedah Generik

Soalan: Bolehkah kad bebas yang berbeza dalam kaedah generik merujuk kepada jenis yang berbeza sama sekali, dan bagaimanakah kad bebas bersarang berkelakuan?

Jawapan:

Kad bebas bersarang adalah punca kekeliruan, bukan berbilang kad bebas.

  • Kad bebas bersarang: Senarai> ialah BUKAN Senarai> kerana generik Java adalah invarian, bermakna Senarai bukan Senarai. Begitu juga, Senarai> bukan Senarai>.
  • Kad liar dalam Kaedah Generik:

    • Berbilang kad liar yang tidak berkaitan dalam kaedah generik dibenarkan , cth., Senarai senarai1, Senarai list2.
    • Walau bagaimanapun, kaedah addAll(list2) pada list1 dibenarkan kerana jenis generik ditangkap oleh ? dalam kedua-dua senarai mungkin berbeza.
    • Jika kad bebas mempunyai sempadan atas yang jelas (cth., ? memanjangkan Senarai>), maka sekatan tambahan dikenakan.

Snippet Penjelasan:

  • LOLUnknowns1: Mungkin Tidak Sah menambah Senarai senaraikan ke Senarai> lol. Ini menyusun kerana ? dalam Senarai boleh merujuk kepada mana-mana jenis, manakala Senarai> boleh mengandungi senarai apa-apa jenis.
  • LOLUnknowns1a: Bila sama ? digunakan untuk kedua-dua Senarai jenis, kompilasi gagal kerana peraturan penukaran tangkapan untuk kad bebas bersarang melarang penggunaan satu ? untuk kedua-dua senarai.
  • LOLUnknowns1b: Apabila satu hujah jelas batal, kompilasi berjaya kerana null boleh digunakan untuk mana-mana jenis generik dan tidak mengambil bahagian dalam penukaran tangkapan.
  • DoubleLOL: Menambah dua Senaraikan> kejadian dibenarkan kerana penukaran tangkapan tidak digunakan secara rekursif, bermakna ? boleh merujuk kepada jenis yang berbeza dalam setiap senarai.
  • IntoTheWild: Mencipta Senarai> untuk Senarai> tidak dibenarkan kerana penukaran tangkapan tidak digunakan secara rekursif.
  • IntoTheWild2: Penukaran tangkapan tidak boleh digunakan pada jenis senarai dalam, jadi List> bukan Senarai>.

Ringkasnya, berbilang kad bebas dalam kaedah generik membenarkan kefleksibelan dalam mengendalikan jenis yang tidak diketahui, manakala kad bebas bersarang mempunyai sekatan khusus yang berkaitan dengan penukaran tangkapan.

Atas ialah kandungan terperinci Bolehkah Kad Liar Berbilang dalam Kaedah Generik Merujuk kepada Jenis Berbeza?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan