top啦它 2022-03-11 18:39 采纳率: 70%
浏览 13
已结题

为什么我使用了范型,输出结果却不是想要的结果?

、、

    public <T> void func(ArrayList<T> arrayList, JSONArray list) {
        List<T> list1 = (List<T>) list;
        for (T t : list1) {
            System.out.println(t);
        }
    }

为什么我使用了范型,输出结果却不是想要的结果?

比如我传入ArrayList<User>,结果却依然是Object
  • 写回答

1条回答 默认 最新

  • 大鹏cool Java领域优质创作者 2022-03-11 19:35
    关注

    编译器会在编译时将泛型替换为具体的类型,对于泛型 <T>,由于没有限制 T 的类型,因此 T 等同于 <T extends Object>,会被替换为 Object。
    如果你只是想把 JSONArray 转成 List<User> 可以改成如下的代码。

    List<User> users = list.toJavaList(User.class);
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

    报告相同问题?

    问题事件

    • 系统已结题 3月24日
    • 已采纳回答 3月16日
    • 创建了问题 3月11日

    悬赏问题

    • ¥15 设计程序,利用函数getCharacterCnt,实现求解出str所指字符串中指定字符的个数,并返回此值。
    • ¥15 设计程序,实现管理30个学生5门课程的成绩,功能模块要求如下。
    • ¥15 B660主板安装xp系统老是出现错误怎么办
    • ¥15 定义过的变量报错未定义
    • ¥15 如何在EXCEL某单元格中查找是否存在另一列中的内容。
    • ¥50 非对称加密(相关搜索:密码学)
    • ¥15 关于非编程寻迹小车的分析
    • ¥15 java导出EXCEL这里已经执行成功了,但是流浪器没有下载
    • ¥15 帮我把代码改的能正常运行就行
    • ¥50 有限元修正、模型修正、最小二乘法,详细步骤