qq_42044986 2021-08-08 23:55 采纳率: 50%
浏览 120
已结题

关于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条回答 默认 最新

查看更多回答(3条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 8月15日
  • 已采纳回答 8月9日
  • 创建了问题 8月8日

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器