qq_42044986
2021-08-08 23:55
采纳率: 50%
浏览 110

关于java泛型T和通配符?的疑问

近期重新复习了泛型和通配符的相关知识,莫名的想到了一个问题:“?”无界通配符的作用在于接收任意的泛型类型,所以我定义了两个方法: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

  • 写回答
  • 好问题 提建议
  • 追加酬金
  • 关注问题
  • 邀请回答

4条回答 默认 最新

相关推荐 更多相似问题