在 Java 泛型(Generics)中,泛型下限通常指的是 通配符的下限(lower bounded wildcard),用 ? super T 表示。
泛型下限指的是:
允许的类型是 T 本身,或 T 的任意父类(超类)
语法形式:
<? super T>
其中:
T 是某个具体类型? super T 表示“T 或其父类”List<? super Integer> list;
这表示:
list 可以指向:
List<Integer>List<Number>List<Object>但不能是:
List<Double>(Double 不是 Integer 的父类)PECS 原则:
当集合主要用来写数据时,用 ? super T
public static void addNumbers(List<? super Integer> list) {
list.add(1);
list.add(2);
}
这样可以:
List<Integer> 写List<Number> 写List<Object> 写| 通配符 | 含义 | 适合场景 |
|---|---|---|
? extends T |
T 或其子类(上限) | 读数据 |
? super T |
T 或其父类(下限) | 写数据 |
List<? extends Number> readList; // 只能读,不能写
List<? super Integer> writeList; // 能写 Integer
因为:
? extends T → 上限(最多到 T)? super T → 下限(最少从 T 开始)如果你愿意,我也可以用图或结合 Comparable、Collections.sort 等实际例子再讲一遍。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。