博爲峯小博老師:安全
[使用類型通配符]3d
List<Object>不是List<String>的父類型,List<Integer>不是List<Number>的父類型,試圖用如下方式賦值是不容許的:code
第5行將報錯」Type mismatch: cannot convert from List<Integer> to List<Number>」。有人可能以爲這樣很不方便:我在一個方法裏面只須要循環檢索一個List,也不能利用多態放一個父類型進去,也不能重載,那怎麼辦呢?針對這個問題,Java給開發者提供了通配符」?」,看一下:blog
<?>是類型通配符,表示是任何泛型的父類型,這樣List<Object>、List<String>這些均可以傳遞進入printList方法中,注意這裏的參數不能寫成List<E>,這樣就報錯了,E未定義。固然<?>也能夠不加,不過這樣會有警告:若是傳遞一個List<E>給List,至關於傳遞一個只承諾將它看成List(原始類型)的方法,這將會破壞使用泛型的類型安全。ip
再注意一點,使用類型通配符,只能從中檢索元素,不能添加元素。開發