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 12864只亮屏 不显示汉字
  • ¥20 三极管1000倍放大电路
  • ¥15 vscode报错如何解决
  • ¥15 前端vue CryptoJS Aes CBC加密后端java解密
  • ¥15 python随机森林对两个excel表格读取,shap报错
  • ¥15 基于STM32心率血氧监测(OLED显示)相关代码运行成功后烧录成功OLED显示屏不显示的原因是什么
  • ¥100 X轴为分离变量(因子变量),如何控制X轴每个分类变量的长度。
  • ¥30 求给定范围的全体素数p的(p-2)/p的连乘积值
  • ¥15 VFP如何使用阿里TTS实现文字转语音?
  • ¥100 需要跳转番茄畅听app的adb命令