Java是一门支持泛型编程的语言,通过使用Java泛型,我们可以在编译时期进行类型检查,避免类型转换异常,提高代码的健壮性和可维护性。在Java泛型中,我们经常会使用到T和>这两个符号,下面我们来了解一下他们的区别。
T是Java泛型中的类型变量,它是一种占位符类型,可以用来代替任意Java类型。我们可以在编写泛型方法或泛型类的时候使用T来表示泛型类型,例如:
public class MyList<T> { private T[] array; public MyList(T... array) { this.array = array; } public T get(int index) { return array[index]; } public static <T> List<T> fromArrayToList(T[] array) { return Arrays.asList(array); } }
在上述代码中,我们使用了<T>来声明MyList类中的泛型类型,使用T[]表示数组中的元素类型。在get方法中,我们直接返回了T类型的元素。在fromArrayToList中,我们使用了<T>来表示泛型类型,方法接受一个T[]类型的数组,然后将它转换成List<T>类型返回。
而在使用通配符的时候,我们通常使用<?>来代表一个未知的类型,例如:
public static void printList(List<?> list) { for (Object obj : list) { System.out.println(obj); } }
在上述代码中,我们使用了<?>来表示一个未知类型的集合,我们无法修改其中的元素,只能以Object的形式读取其中的元素。该方法可以接受List<String>等类型的集合。
因此,T和<?>在Java泛型中的使用都十分重要,T用来表示泛型类型,可以在方法或类的声明中使用;而<?>用来表示一个未知类型,可以在通过通配符限制泛型类型时使用。