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

news/2024/10/23 5:53:30/

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

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

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

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

  1. 必须具有真实类型的存在
  2. 泛型的类型是明确的如 (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);//trueSystem.out.println(((List<?>)ins).get(0) instanceof String);//falseSystem.out.println(((List<?>)boos).get(0) instanceof Boolean);//trueSystem.out.println(((List<?>)lons).get(0) instanceof Long);//false}

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


http://www.ppmy.cn/news/9995.html

相关文章

实验二十四 策略路由配置

实验二十四 策略路由配置实验要求&#xff1a; 某企业通过路由器AR1连接互联网&#xff0c;由于业务儒要&#xff0c;与两家运营商ISPA和ISPB相连。 企业网内的数据流从业务类型上可以分为两类&#xff0c; 一类来自于网络172.16.0.0/16&#xff0c;另 一类 来自于网络172.17.0…

FreeMen正式上线,让工作更自由

“让工作更自由”&#xff0c;开屏页上六个大字宣告着FreeMen正式上线&#xff0c;全新的FreeMen APP也正式登录各大手机应用市场。作为一款专注IT技术者圈子的APP&#xff0c;其上线标志着助力程序员职业道路上向前迈进一大步。 FreeMen相关负责人表示&#xff0c;基本上10个职…

【华为机试真题详解】不含 101 的数(二)【2022 Q4 | 100分】

文章目录 前言题目解析参考代码前言 《华为机试真题详解 Python实现》专栏含牛客网华为专栏、华为面经试题、华为OD机试真题。 如果您在准备华为的面试,期间有想了解的可以私信我,我会尽可能帮您解答,也可以给您一些建议! 本文解法非最优解(即非性能最优),不能保证通过…

Spring Boot整合Junit

系列文章目录 Spring Boot[概述、功能、快速入门]_心态还需努力呀的博客-CSDN博客 Spring Boot读取配置文件内容的三种方式_心态还需努力呀的博客-CSDN博客 该系列文章持续更新中~ 目录 系列文章目录 前言 一、搭建SpringBoot工程 二、引入starter-test起步依赖 三、编…

Android 12 蓝牙适配 Java版

Android 12.0蓝牙适配前言正文一、Android版本中蓝牙简介二、新建项目① 配置build.gradle② 配置AndroidManifest.xml三、打开蓝牙① 打开蓝牙意图② 请求BLUETOOTH_CONNECT权限意图四、蓝牙扫描① 扫描者② 扫描回调③ 扫描方法④ 执行扫描⑤ 应用不推导物理位置五、页面显示…

机器学习:如何解决类别不平衡问题

类别不平衡是一个常见问题&#xff0c;其中数据集中示例的分布是倾斜的或有偏差的。 1. 简介 类别不平衡是机器学习中的一个常见问题&#xff0c;尤其是在二元分类领域。当训练数据集的类分布不均时会发生这种情况&#xff0c;从而导致训练模型存在潜在偏差。不平衡分类问题的示…

N个点,求距离最近的两个点---分支策略(2)

N个点&#xff0c;求距离最近的两个点---分治策略&#xff08;1&#xff09;_Happy_Traveller的博客-CSDN博客介绍了N个点&#xff0c;求距离最近的两个点的分治策略的算法&#xff0c;可以将直觉上的复杂度优化到&#xff0c;这其实已经是很大的改进了&#xff0c;那么有没有办…

php学习笔记-代码基本语法-day01

php代码基本语法 PHP&#xff08;PHP: Hypertext Preprocessor&#xff09;即“超文本预处理器”&#xff0c;是在服务器端执行的脚本语言&#xff0c;尤其适用于Web开发并可嵌入HTML中。PHP语法学习了C语言&#xff0c;吸纳Java和Perl多个语言的特色发展出自己的特色语法&…