下界通配符使用 ? super Type 形式,限定泛型为指定类型或其父类,适用于写操作场景。例如 List

Java中的下界通配符(lower bounded wildcard)使用 ? super Type 的形式,用于限定泛型类型必须是某个指定类型或其父类型。它主要用在写操作的场景中,确保数据可以安全地存入集合。
下界通配符的基本语法
下界通配符的语法是:
? super Type其中 Type 是某个具体类或接口,表示通配符接受的是 Type 或它的任意父类型。
适用场景:向集合中添加元素
当你需要往一个泛型集合中写入数据时,使用下界通配符可以保证类型安全。例如:
立即学习“Java免费学习笔记(深入)”;
List super Integer> list = new ArrayListlist.add(100); // OK
list.add(new Integer(42)); // OK
// 不能读取为 Integer,只能作为 Object 使用
Object obj = list.get(0); // 只能以 Object 类型接收
因为编译器只知道这个列表是某个 Integer 父类型的列表(可能是 Integer、Number 或 Object),所以你可以安全地放入 Integer 实例,但取出时无法确定具体类型,只能当作 Object 处理。
酷纬企业网站管理系统Kuwebs是酷纬信息开发的为企业网站提供解决方案而开发的营销型网站系统。在线留言模块、常见问题模块、友情链接模块。前台采用DIV+CSS,遵循SEO标准。 1.支持中文、英文两种版本,后台可以在不同的环境下编辑中英文。 3.程序和界面分离,提供通用的PHP标准语法字段供前台调用,可以为不同的页面设置不同的风格。 5.支持google地图生成、自定义标题、自定义关键词、自定义描
PECS 原则中的应用
在 Java 泛型设计中,有一个著名的原则叫 PECS(Producer-Extends, Consumer-Super):
- 如果一个泛型参数化对象主要用于生产(读取)数据,使用 ? extends T
- 如果主要用于消费(写入)数据,使用 ? super T
下界通配符正适用于“消费者”角色。典型例子是 Collections.max() 或 Collections.sort() 中的比较器参数:
public static这里允许传入能比较 T 或其父类型的比较器,提高了灵活性。比如你可以用 Comparator
不能同时使用上下界之外的操作
下界通配符限制了从集合中读取的能力。虽然你可以添加符合下界的元素,但获取元素时类型信息丢失,只能以 Object 接收。因此它不适合既需要频繁读又需要写的场景。
基本上就这些。下界通配符不是最直观的概念,但它在提升 API 灵活性和类型安全性方面非常有用,特别是在设计通用工具方法时。关键是理解它适合“只写”或“多消费少读”的场景。不复杂但容易忽略细节。










