《Java應用技術》課程上,FM老師提到了這樣一個技術細節:
Collection<?> c = new ArrayList<String>();
c.add(new Object()); // fail
c.add("this is a String obeject") // also fail
爲什麼之後再往c裏add一個String類型的對象,也一樣會出錯?
解釋如下:
在Java集合框架中,對於參數值是未知類型的容器類,只能讀取其中元素,不能向其中添加元素, 因爲,其類型是未知,所以編譯器無法識別添加元素的類型和容器的類型是否兼容,唯一的例外是NULL。
在實際應用場景中,通配符與泛型的結合常以這樣的形式出現:GenericType