Java 类型通配符的具体有什么作用?

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

Java 类型通配符的具体有什么作用?

Java 类型通配符的用途

类型通配符是在 Java 中一种通用的类型参数,它允许我们编写代码时对类型不敏感。这在泛型集合和通配方法中特别有用。

语法

类型通配符使用 ? 符号表示。它可以限制在它被使用的类型参数。语法如下:

<? extends Type>
<? super Type>
  • ? extends Type:匹配 Type 类型的子类型或本身。
  • ? super Type:匹配 Type 类型的超类型或本身。

用途

1. 在泛型集合中

类型通配符可用于创建可以保存不同类型元素的泛型集合。例如:

List<?> list = new ArrayList<>();
list.add("Hello");
list.add(10); // 编译器不会报错

由于列表的类型参数 (?) 未指定,因此我们可以添加任何类型的数据。

2. 在通配方法中

类型通配符可用于创建对类型不敏感的通配方法。例如:

public static <T> void printList(List<? extends T> list) {
  for (T item : list) {
    System.out.println(item);
  }
}

此方法可以打印任何类型的列表,因为类型参数 T 由通配符 ? extends T 进行了限制。

实战案例:

假设我们有一个包含各种形状的列表 shapes:

List<Shape> shapes = 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 类中定义的方法。

以上就是Java 类型通配符的具体有什么作用?的详细内容,更多请关注其它相关文章!