近期重新复习了泛型和通配符的相关知识,莫名的想到了一个问题:“?”无界通配符的作用在于接收任意的泛型类型,所以我定义了两个方法:1)泛型方法getListAnother() 使用泛型T;2)普通方法getList()使用无界通配符?;两者的作用都是接收包含任意类型的List,并打印类型信息,然后返回这个List。
这两个方法输出一模一样,所以在一定程度上泛型T是可以完全代替无界通配符?的嘛?
```java
import java.util.*;
public class Test {
public static void main(String[] args) {
ArrayList<String> strList = new ArrayList<>();
ArrayList<Integer> intList=new ArrayList<>();
strList.add("123");
intList.add(12);
getList(intList);
getList(strList);
getListAnother(intList);
getListAnother(strList);
}
public static List getList(List<?> list){
System.out.println("? 方法里的?类型是:"+list.get(0).getClass().getName());
return list;
}
public static <T> List getListAnother(List<T> list){
System.out.println("T 方法里的T类型是:"+list.get(0).getClass().getName());
return list;
}
}
输出结果
? 方法里的?类型是:java.lang.Integer
? 方法里的?类型是:java.lang.String
T 方法里的T类型是:java.lang.Integer
T 方法里的T类型是:java.lang.String