C# generik tidak memiliki tipe wildcard karena .net generik adalah generik yang didukung oleh clr, sedangkan java jvm tidak mendukung obat generik, tetapi hanya gula sintaks, dan mereka dikonversi menjadi tipe objek ketika disusun oleh kompiler
Jenis wildcard mewakili kelas induk dari jenis generik di java
tes public void (Daftar <Poles> c) {for (int i = 0; i <c.size (); i ++) {System.out.println (c.get (i)); }}// Buat Daftar <String> Daftar Objek <String> strlist = ArrayList baru <string> (); // Calendate Tes Metode Uji Sebelumnya (STRLIST);
Kompilasi program di atas, dan kesalahan kompilasi akan terjadi pada tes (STRLIST), yang berarti bahwa daftar <string> tidak dapat dianggap sebagai subclass dari daftar <Peject>. Pada saat ini, Anda perlu menggunakan jenis wildcard, yang mana?
Daftar di atas <POBPENT> dapat diganti dengan daftar <?> Dan kemudian dapat dikompilasi
tes public void (daftar <?> C) {for (int i = 0; i <c.size (); i ++) {System.out.println (c.get (i)); }}Daftar <String> dapat digunakan sebagai subkelas daftar <?>, Daftar <?> Dapat digunakan sebagai kelas induk dari jenis daftar apa pun,
Bagaimana jika Anda ingin menjadi kelas induk dari daftar <string> alih -alih daftar <int>? Menulisnya seperti daftar ini <? memperluas string>
Dalam C#, ini adalah jenis kendala
kelas myclass <t, u> di mana t: kelas di mana u: struct {} Antarmuka imyinterface {} Kamus kelas <tkey, tval> di mana tkey: icomparable, ienumerable di mana tval: imyinterface {public void add (kunci tkey, tval val) {}}Batas atas untuk wildcard generik terbatas di java:
// Tunjukkan bahwa tipe T harus berupa kelas angka atau subkelasnya, dan harus mengimplementasikan antarmuka java.ializable antarmuka kelas publik Apple <t memperluas angka & java.io.serializable> {}Di atas adalah konten lengkap dari perbandingan dan analisis wildcard java generik dan C# yang dibawa kepada Anda oleh editor. Saya harap semua orang akan mendukung wulin.com ~