Java 函数中的泛型通配符:上限和下限

2024年 4月 25日 74.2k 0

在 java 中,泛型通配符允许表示泛型类型,而不指定具体类型。上限通配符 ( extends t>) 表示类型参数 t 或其任何子类,允许接受列表中的子类数据。下限通配符 ( super t>) 表示 t 或其任何超类,允许接受列表中的超类数据。通配符可用于实现可调整大小的带泛型的数组列表,允许处理各种类型和进行添加/删除操作。

Java 函数中的泛型通配符:上限和下限

Java 函数中的泛型通配符:上限和下限

在 Java 中,我们可以使用通配符来表示泛型类型,允许我们在不指定具体类型的情况下使用泛型。本文将探讨上限和下限通配符,并通过实战案例展示其用法。

上限通配符

上限通配符 ( extends T>) 表示类型参数 T 或其任何子类。例如:

public static  double sum(List numbers) {
  double total = 0;
  for (T num : numbers) {
    total += num.doubleValue();
  }
  return total;
}

此函数可以接受任何 Number (如 Integer、Double) 或其子类的列表。我们可以安全地将任何满足 Number 约束的列表传递给此函数,如下所示:

List ints = List.of(1, 2, 3);
double sumIntegers = sum(ints); // 编译通过

下限通配符

下限通配符 () 表示类型参数 T 或其任何超类。例如:

public static  void process(List entities) {
  for (T entity : entities) {
    System.out.println(entity.getClass().getName());
  }
}

此函数可以接受任何 Number 的超类 (如 Object、Serializable) 的列表。我们可以安全地将任何满足 Number 超类约束的列表传递给此函数,如下所示:

List objects = List.of("Hello", 123);
process(objects); // 编译通过

实战案例

考虑一个可调整大小的数组列表,我们可以使用泛型通配符来实现它:

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class ResizableArrayList {

  private List list;

  public ResizableArrayList() {
    this(new ArrayList());
  }

  public ResizableArrayList(List initialList) {
    list = new ArrayList(initialList);
  }

  public void addAll(List elements) {
    list.addAll(elements);
  }

  public void removeAll(List elements) {
    list.removeAll(elements);
  }

  public List getList() {
    return list;
  }

  public static void main(String[] args) {
    ResizableArrayList numbers = new ResizableArrayList(
        Arrays.asList(1, 2, 3)
    );
    numbers.addAll(Arrays.asList(4, 5, 6));
    numbers.removeAll(Arrays.asList(2, 3));

    System.out.println(numbers.getList()); // [1, 4, 5, 6]
  }
}

这个可调整大小的数组列表可以处理任何类型 E,允许我们向列表中添加或从中删除各种对象。

以上就是Java 函数中的泛型通配符:上限和下限的详细内容,更多请关注每日运维网(www.mryunwei.com)其它相关文章!

相关文章

JavaScript2024新功能:Object.groupBy、正则表达式v标志
PHP trim 函数对多字节字符的使用和限制
新函数 json_validate() 、randomizer 类扩展…20 个PHP 8.3 新特性全面解析
使用HTMX为WordPress增效:如何在不使用复杂框架的情况下增强平台功能
为React 19做准备:WordPress 6.6用户指南
如何删除WordPress中的所有评论

发布评论