本文共 2171 字,大约阅读时间需要 7 分钟。
通配符在泛型类的使用中起着关键作用,尤其是在泛型类作为方法参数时,通配符用于限制传入的类型实参。通过使用通配符,我们可以对泛型参数施加上界或下界,确保传递的类型符合预期。
通配符(?)是泛型使用中的核心元素,用于指定类型边界。通配符可以在两种场景中使用:
语法:在通配符后使用 extends 关键字来指定上界。
public static void printAll(MyArray m) { // 可以传入Animal子类的任意类型 printAll(new MyArray (...)); printAll(new MyArray (...)); printAll(new MyArray (...)); // 下列调用会编译错误 printAll(new MyArray (...)); printAll(new MyArray 注意:在泛型使用中,通配符的上界与泛型定义中的类型边界是不同的概念,需要区分处理。
语法:在通配符后使用 super 关键字来指定下界。
public static void printAll(MyArray m) { // 可以传入Cat父类的任意子类 printAll(new MyArray (...)); printAll(new MyArray (...)); printAll(new MyArray 在泛型中,确定父子关系需要使用通配符。以下示例展示了如何通过通配符来表达类之间的继承关系:
public class MyArray{ // MyArray 是 MyArray
泛型方法的语法格式如下:
public staticvoid swap(T[] arr, int i, int j) { T temp = arr[i]; arr[i] = arr[j]; arr[j] = temp;}
public class Main { public static void swap(T[] arr, int i, int j) { T temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; } // 没有显示指定类型,编译期间会进行类型推导 public static void main(String[] args) { Integer[] a = { ... }; swap(a, 0, 9); // 显式指定类型,编译期间不需要进行类型推导 String[] b = { ... }; Main.swap(b, 0, 9); }} int, String, boolean 等基本数据类型作为泛型参数。new List<int> 这样的对象。instanceof 判断:无法对带参数类型的泛型进行 instanceof 判断。String[] arr = new String<String>(); 这样的数组。转载地址:http://btsa.baihongyu.com/