java - List<?>, List, List<Object>, List<? extends Object>各有什么区别?
巴扎黑
巴扎黑 2017-04-17 17:42:19
0
4
651

List<?>, List, List<Object>, List<? extends Object>各有什么区别?

巴扎黑
巴扎黑

membalas semua(4)
Ty80

Saya rasa orang di atas mempunyai masalah dengan pemahaman mereka Pertama sekali, Senarai<?> Ia tidak mewakili sebarang jenis, tetapi kami tidak tahu apakah jenis khusus ini apabila Pengaturcaraan Senarai mewakili senarai asli, senarai tanpa parameter generik dan penggunaannya tidak digalakkan ia adalah Objek, ia boleh dimasukkan Akhirnya, Senarai< extends Object> mewakili koleksi ini menyimpan salah satu subkelas Object, bukan sebarang subkelas objek

Perkara terakhir yang saya ingin katakan ialah <?> sebenarnya agak mirip dengan <? 🎜>

public class Base
{
    public static void unbounded(List<?> list){}
    public static void upBounded(List<? extends Object> list){}

    public static void main(String args[])
    {
        List<?> list1 = new ArrayList<Object>() ;
        List<? extends Object> list2 = new ArrayList<Object>() ;

        unbounded(list2) ;
        upBounded(list1) ;
    }
}
Walau bagaimanapun, perbezaan ini hanya dijana oleh pengkompil pada masa penyusunan, disebabkan pemadaman, semuanya adalah Senarai<Objek>

Pemahaman peribadi saya
.

大家讲道理

List<?> dan List: Ini bermakna sebarang jenis objek boleh diletakkan dalam koleksi Jika List digunakan secara bersendirian, akan ada amaran dalam Eclipse;

: Ini mengenai menyimpan objek jenis Objek dalam koleksi Memahami warisan dan mekanisme transformasi ke atas dalam Java Tidak sukar untuk mencari bahawa koleksi ini sebenarnya boleh menyimpan sebarang jenis objek List<Object>

>: Ini bermakna objek yang disimpan dalam koleksi mestilah objek subkelas kelas Objek

List<? extends ObjectUntuk butiran, sila rujuk bahagian tentang generik dalam "Teknologi Teras Java (Jilid 1)"...

小葫芦

Senarai ialah sejenis koleksi.
< > mewakili jenis generik
Senarai<?> mewakili sebarang jenis
Senarai<Objek> mewakili Sebarang jenis objek yang diwarisi daripada kelas objek boleh diletakkan dalam koleksi ini

Jika anda ingin mengetahui lebih lanjut tentang gerak isyarat kecil rangka kerja koleksi, anda boleh membaca lajur yang saya tulis, yang mempunyai bab tentang rangka kerja koleksi

大家讲道理

**Senarai<?>, Senaraikan<Objek>, Senaraikan<? Perbezaannya adalah seperti berikut:
1 Memahami generik dalam JDK letakkannya dalam Untuk perkara dalam Koleksi, dengan mengehadkan jenis dalam <> semasa penyusunan, ralat boleh disemak sebanyak mungkin semasa penyusunan, bukannya membuang pengecualian semasa berjalan dalam talian.
2. Jika List ditulis seperti ini, akan ada garis kuning di bawahnya dalam gerhana, dan akan ada amaran. Dan ia juga ditulis dengan cara yang tidak teratur, manakala selebihnya ditulis dengan cara yang standard.
3.Senarai<?> boleh meletakkan apa-apa jenis Senarai<Objek> depan , Senarai<? memanjangkan Objek> anda boleh meletakkan mana-mana kelas atau kelas Objek itu sendiri.
Semoga ia membantu anda~~**

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan