Java泛型中的通配符
Java中的泛型是一种参数化类型,可以使得代码更加灵活和可重用。在Java泛型中,通配符是一个特殊的符号,用来表示未知类型。通配符可以用来限制泛型的类型范围,达到更好的类型安全性。
通配符的分类
Java中的通配符主要分为三种:?
、? extends T
、? super T
。其中,?
表示未知类型,? extends T
表示类型的上界限定为T或T的子类,? super T
表示类型的下界限定为T或T的父类。
通配符的使用
通配符作为参数
通配符可以作为方法的参数,用来表示方法能够接受任意类型的参数。下面是一个示例代码:
public class Utils {
public static void printList(List<?> list) {
for (Object obj : list) {
System.out.println(obj);
}
}
}
通配符的上界限定
通配符的上界限定可以用来限制泛型的类型范围。下面是一个示例代码:
public class Utils {
public static <T extends Number> double sum(List<T> list) {
double total = 0.0;
for (T num : list) {
total += num.doubleValue();
}
return total;
}
}
通配符的下界限定
通配符的下界限定可以用来限制泛型的类型范围。下面是一个示例代码:
public class Utils {
public static void addNumbers(List<? super Integer> list) {
list.add(1);
list.add(2);
}
}
序列图
sequenceDiagram
participant Client
participant Utils
Client->>Utils: Utils.printList(List<?> list)
Utils->>Utils: for (Object obj : list)
Utils->>Utils: System.out.println(obj)
旅行图
journey
title Java泛型之通配符使用
section 通配符作为参数
Client->Utils: Utils.printList(List<?> list)
Utils->Utils: for (Object obj : list)
Utils->Utils: System.out.println(obj)
section 通配符的上界限定
Client->Utils: Utils.sum(List<T extends Number> list)
Utils->Utils: for (T num : list)
Utils->Utils: total += num.doubleValue()
section 通配符的下界限定
Client->Utils: Utils.addNumbers(List<? super Integer> list)
Utils->Utils: list.add(1)
Utils->Utils: list.add(2)
通过本文的介绍,我们了解到了Java泛型中通配符的基本概念和使用方法。通配符的灵活性和类型安全性可以帮助我们编写更加健壮的代码。希望本文对您有所帮助,谢谢阅读!