欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

java集合super和extends

陳麥偉1年前8瀏覽0評論

在Java集合框架中,有時我們需要為集合中存儲的元素指定一個范圍,這時就用到了泛型的通配符。Java中的通配符包括super和extends兩種,它們分別用于限定元素的下限和上限。

super用于指定集合中存儲的元素類型必須是T的父類或T本身。例如:

List<? super Integer> list = new ArrayList<>();
list.add(new Object()); // 編譯錯誤,超出Integer類型的下限
list.add(new Number()); // 編譯錯誤,超出Integer類型的下限
list.add(new Integer(1)); // 正確

上述代碼中,List<? super Integer>表示集合中存儲的元素類型必須是Integer的父類或Integer本身。因此,向集合中添加Object和Number類型的元素會導致編譯錯誤,只有添加Integer類型元素是正確的。

extends用于指定集合中存儲的元素類型必須是T的子類或T本身。例如:

List<? extends Number> list = new ArrayList<>();
list.add(new Object()); // 編譯錯誤,超出Number類型的上限
list.add(new Number()); // 正確
list.add(new Integer(1)); // 正確
list.add(new Double(1)); // 正確

上述代碼中,List<? extends Number>表示集合中存儲的元素類型必須是Number的子類或Number本身。因此,向集合中添加Object類型的元素會導致編譯錯誤,只有添加Number、Integer和Double類型元素是正確的。