理解泛型通配符(List & List< ? super T>)

  • List<? extends T >是T的某種子類的一個集合,所以List中的方法的參數涉及到通配符的都不能被調用。因爲編譯器不知道集合具體裝的是T的哪個子類對象(subclass) ,所以不可以向集合中添加T的子類對象,包括T對象


           編譯時報錯:參數不匹配

  • List< ? super T>是T的某種基類的一個集合,所以可以向集合中添加T或T的子類對象,而不能添加T的某種基類對象,也是編譯器不知道集合具體裝的是T的哪種基類對象(superclass)


所以,其實本質上,無論是List<? extends T > 還是 List< ? super T> ,存在以上的現象,還是因爲編譯器不知道List的類型,而泛型功能之一就是爲了保障類型安全。
《Java編程思想》在泛型那一章節中有這樣一句話:真正的問題是我們在談論容器的類型,而不是容器持有的類型。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章