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

Java 类型通配符的用途
类型通配符是在 Java 中一种通用的类型参数,它允许我们编写代码时对类型不敏感。这在泛型集合和通配方法中特别有用。
语法
立即学习“Java免费学习笔记(深入)”;
类型通配符使用 ? 符号表示。它可以限制在它被使用的类型参数。语法如下:
extends Type> super Type>
-
? extends Type:匹配Type类型的子类型或本身。 -
? super Type:匹配Type类型的超类型或本身。
用途
1. 在泛型集合中
类型通配符可用于创建可以保存不同类型元素的泛型集合。例如:
技术上面应用了三层结构,AJAX框架,URL重写等基础的开发。并用了动软的代码生成器及数据访问类,加进了一些自己用到的小功能,算是整理了一些自己的操作类。系统设计上面说不出用什么模式,大体设计是后台分两级分类,设置好一级之后,再设置二级并选择栏目类型,如内容,列表,上传文件,新窗口等。这样就可以生成无限多个二级分类,也就是网站栏目。对于扩展性来说,如果有新的需求可以直接加一个栏目类型并新加功能操作
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 类中定义的方法。









