在 java 中,泛型通配符允许表示泛型类型,而不指定具体类型。上限通配符 ( extends t>) 表示类型参数 t 或其任何子类,允许接受列表中的子类数据。下限通配符 ( super t>) 表示 t 或其任何超类,允许接受列表中的超类数据。通配符可用于实现可调整大小的带泛型的数组列表,允许处理各种类型和进行添加/删除操作。
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
实战案例
考虑一个可调整大小的数组列表,我们可以使用泛型通配符来实现它:
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)其它相关文章!