java泛型通配符及上下界extends,super保证安全性灵活性可读性
目录
java泛型通配符?及上下界(extends,super)保证安全性、灵活性、可读性
在 Java
中,泛型通配符(?
)用于表示未知类型,通常用于增强泛型的灵活性。通配符可以与上下限结合使用,以限制泛型的范围。以下是通配符及上下限的使用示例:
1 无界通配符 (?
)
无界通配符表示可以接受任意类型的泛型参数。 public static void printList(List list) { for (Object element : list) { System.out.println(element); } }
- 示例调用: List intList = Arrays.asList(1, 2, 3); List stringList = Arrays.asList(“Hello”, “World”); printList(intList); // 输出: 1 2 3 printList(stringList); // 输出: Hello World
2 上界通配符 ( extends T
)
上界通配符表示泛型类型必须是 T
或其子类。
public static double sumOfList(List extends Number list) {
double sum = 0.0;
for (Number number : list) {
sum += number.doubleValue();
}
return sum;
}
- 示例调用: List intList = Arrays.asList(1, 2, 3); List doubleList = Arrays.asList(1.1, 2.2, 3.3); System.out.println(sumOfList(intList)); // 输出: 6.0 System.out.println(sumOfList(doubleList)); // 输出: 6.6
3 下界通配符 ( super T
)
下界通配符表示泛型类型必须是 T
或其父类。
public static void addNumbers(List super Integer list) {
list.add(1);
list.add(2);
list.add(3);
}
- 示例调用: List numberList = new ArrayList<>(); addNumbers(numberList); System.out.println(numberList); // 输出: [1, 2, 3]
4 上下限通配符的综合使用
上下限通配符通常用于泛型类或方法中,以限制泛型类型的范围。 public static void copy(List extends T src, List super T dest) { for (T item : src) { dest.add(item); } }
- 示例调用: List srcList = Arrays.asList(1, 2, 3); List destList = new ArrayList<>(); copy(srcList, destList); System.out.println(destList); // 输出: [1, 2, 3]
总结:
?
:无界通配符,接受任意类型。extends T
:上界通配符,限制为T
或其子类。super T
:下界通配符,限制为T
或其父类。 通过合理使用通配符和上下限,可以增强泛型的灵活性,同时保证类型安全。