如何获取Java集合中泛型的Class对象

 更新时间:2025年06月21日 10:24:26   作者:?abc!  
这篇文章主要介绍了如何获取Java集合中泛型的Class对象问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

获取Java集合中泛型的Class对象

直接获取时获取不到的,类型被虚拟机擦除了

  • 泛型的正常工作是依赖编译器在编译源码的时候,先进行类型检查,然后进行类型擦除并且在类型参数出现的地方插入强制转换的相关指令实现的。编译器在编译时擦除了所有类型相关的信息,所以在运行时不存在任何类型相关的信息。例如List在运行时仅用一个List类型来表示。为什么要进行擦除呢?这是为了避免类型膨胀。

利用子类实现父类的泛型是可以的

如何才能获取到泛型的类型

  • 必须具有真实类型的存在
  • 泛型的类型是明确的如 (List <User> 是明确的,List<T> 是不明确的)

尝试

如果直接使用getClass等方法,会出现下面的情况

这个是获取不到类型的

但是换成下面的方式,便可以获取:使用下边这组大括号,这一点非常重要

换一种类型,一样的情况

所以,可以通过上面的方式去获取类型

上面的这种方法的思路为:利用子类实现父类的泛型是可以的

通过获取第一个元素去判断当前属于哪一种类型即可

很多情况下,按下面的思路去操作即可

public static void main(String[] args) {

        List<String> strs = new ArrayList<>();
        strs.add("xxx");

        List<Integer> ins = new ArrayList<>();
        ins.add(1);

        List<Boolean> boos = new ArrayList<>();
        boos.add(true);

        List<Long> lons = new ArrayList<>();
        lons.add(null);

        System.out.println(((List<?>)strs).get(0) instanceof String);//true
        System.out.println(((List<?>)ins).get(0) instanceof String);//false
        System.out.println(((List<?>)boos).get(0) instanceof Boolean);//true
        System.out.println(((List<?>)lons).get(0) instanceof Long);//false

    }

其他的直接去判断,通过查找并尝试,没有找到符合我要求的,怎么通过上面的方法去暂时实现了

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • SpringBoot调用DeepSeek接口的实现

    SpringBoot调用DeepSeek接口的实现

    本文主要介绍了SpringBoot调用DeepSeek接口的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-02-02
  • 一文带你掌握Java如何自动化生成目录结构文档

    一文带你掌握Java如何自动化生成目录结构文档

    这篇文章主要为大家详细介绍了Java如何自动化生成目录结构文档,文中的示例代码讲解详细,具有一定的借鉴价值,感兴趣的小伙伴可以跟随小编一起学习一下
    2026-01-01
  • java如何获取文件或目录的路径

    java如何获取文件或目录的路径

    介绍了几种获取项目路径的方法,包括System.getProperty("user.dir")、类加载器getResource()、file.getPath()和file.getCanonicalPath(),并比较了它们的优缺点,推荐使用System.getProperty("user.dir")更为方便
    2025-11-11
  • Java读写ini文件代码示例

    Java读写ini文件代码示例

    这篇文章主要介绍了Java读写ini文件代码示例,分享了相关代码示例及相关注释,小编觉得还是挺不错的,具有一定借鉴价值,需要的朋友可以参考下
    2018-02-02
  • 使用Java轻松判断一个5位数是否为回文数

    使用Java轻松判断一个5位数是否为回文数

    在编程中,回文数是一个正读和反读都相同的数字,本文将介绍如何使用Java编写一个程序来判断一个5位数是否为回文数,感兴趣的小伙伴可以了解下
    2026-03-03
  • Java正则表达式匹配电话格式

    Java正则表达式匹配电话格式

    正则表达式是由普通的字符以及特殊字符组成的文字模式,用来在查找文字主体时待匹配的一个或多个字符串。本文给大家介绍java正则表达式匹配电话格式,对java正则表达式匹配相关知识感兴趣的朋友一起学习吧
    2015-11-11
  • java实现简单的拼图游戏

    java实现简单的拼图游戏

    这篇文章主要为大家详细介绍了java实现简单的拼图游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-07-07
  • Java读取resources目录下文件路径的九种代码示例教程

    Java读取resources目录下文件路径的九种代码示例教程

    在Java开发中经常需要读取项目中resources目录下的文件或获取资源路径,这篇文章主要给大家介绍了关于Java读取resources目录下文件路径的九种代码示例教程,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-07-07
  • java解析XML Node与Element的区别(推荐)

    java解析XML Node与Element的区别(推荐)

    下面小编就为大家分享一篇java解析XML Node与Element的区别,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-01-01
  • Java中HashMap里面key为null存放到哪

    Java中HashMap里面key为null存放到哪

    这篇文章主要介绍了Java中HashMap里面key为null存放到哪,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-02-02

最新评论