java类型通配符(?)允许编写代码时对类型不敏感。它在泛型集合和通配方法中用途广泛:在泛型集合中,可创建保存不同类型元素的集合,例如:listzuojiankuohaophpcn?youjiankuohaophpcn list = new arraylistzuojiankuohaophpcnyoujiankuohaophpcn()。在通配方法中,可创建对类型不敏感的方法,例如:public static zuojiankuohaophpcntyoujiankuohaophpcn void printlist(listzuojiankuohaophpcn? extends tyoujiankuohaophpcn list)。
Java 类型通配符的用途
类型通配符是在 J

语法
类型通配符使用 ? 符号表示。它可以限制在它被使用的类型参数。语法如下:
extends Type> super Type>
-
? extends Type:匹配Type类型的子类型或本身。 -
? super Type:匹配Type类型的超类型或本身。
用途
1. 在泛型集合中
类型通配符可用于创建可以保存不同类型元素的泛型集合。例如:
List> list = new ArrayList<>();
list.add("Hello");
list.add(10); // 编译器不会报错由于列表的类型参数 (?) 未指定,因此我们可以添加任何类型的数据。
2. 在通配方法中
类型通配符可用于创建对类型不敏感的通配方法。例如:
public staticvoid printList(List extends T> list) { for (T item : list) { System.out.println(item); } }
此方法可以打印任何类型的列表,因为类型参数 T 由通配符 ? extends T 进行了限制。
实战案例:
假设我们有一个包含各种形状的列表 shapes:
Listshapes = new ArrayList<>(); shapes.add(new Circle()); shapes.add(new Square());
现在,我们可以使用类型通配符创建一个方法来计算这些形状的总面积:
public static double calculateTotalArea(List extends Shape> shapes) {
double totalArea = 0;
for (Shape shape : shapes) {
totalArea += shape.getArea();
}
return totalArea;
}这个方法可以计算任何类型形状的总面积,因为它只访问 Shape 类中定义的方法。








