在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類型元素是正確的。
上一篇css規則定義中的類型
下一篇css控制標簽字數