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

news2025/1/15 6:34:47

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

  • 泛型的正常工作是依赖编译器在编译源码的时候,先进行类型检查,然后进行类型擦除并且在类型参数出现的地方插入强制转换的相关指令实现的。编译器在编译时擦除了所有类型相关的信息,所以在运行时不存在任何类型相关的信息。例如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);//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

    }

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/145463.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【36张图,一次性补全网络基础知识】

OSI和TCP/IP是很基础但又非常重要的知识&#xff0c;很多知识点都是以它们为基础去串联的&#xff0c;作为底层&#xff0c;掌握得越透彻&#xff0c;理解上层时会越顺畅。今天这篇网络基础科普&#xff0c;就是根据OSI层级去逐一展开的。 01 计算机网络基础 01 计算机网络的…

让阿里再次伟大--钉钉如何长成独角兽的?

文章目录引子开端发展历程&#xff1a;从2014到2022钉钉和阿里云的全面融合钉钉体系架构技术挑战ToB与ToC的差异安全要求高稳定性要求高业务多样性钉钉的创新存储创新单元化平台开放这些年&#xff0c;钉钉做了哪些优化?钉钉的技术栈钉钉的竞争对手们飞书微信华为welink未来参…

ArcGIS基础实验操作100例--实验58二维点、线转三维

本实验专栏参考自汤国安教授《地理信息系统基础实验操作100例》一书 实验平台&#xff1a;ArcGIS 10.6 实验数据&#xff1a;请访问实验1&#xff08;传送门&#xff09; 高级编辑篇--实验58 二维点、线转三维 目录 一、实验背景 二、实验数据 三、实验步骤 &#xff08;1&…

二、kubernetes集群环境搭建

文章目录1.前置知识点2.kubeadm 部署方式介绍3.安装要求4.最终目标5.集群环境6 初始化环境6.1 检查操作系统版本6.2 主机名解析6.3 时间同步6.4 禁用selinux6.5 禁用swap分区6.6 修改linux的内核参数6.7 配置ipvs功能6.8 安装docker6.9 安装Kubernetes组件6.10 准备集群镜像6.1…

多线程案例

日升时奋斗&#xff0c;日落时自省 目录 1、单例模式 1.1、饿汉模式 1.2、懒汉模式 1.3、饿汉和懒汉的线程安全 2、生产者消费者模型 2.1、理论解释 2.2、优势 2.3、阻塞队列代码解析 2.4、生产者消费者代码解析 2.5、简单实现阻塞队列代码解析 3、定时器 3.1、定时…

Java中String、StringBuffer 和 StringBuilder 的区别

1. String 字符串常量&#xff0c;字符串长度不可变。Java 中 String 是 immutable&#xff08;不可变&#xff09;的。 2. StringBuffer 1.如果要频繁对字符串内容进行修改&#xff0c;出于效率考虑最好使用 StringBuffer&#xff0c;如果想转成 String 类型&#xff0c;可以调…

论文笔记Neural Ordinary Differential Equations

论文笔记Neural Ordinary Differential Equations概述参数的优化连续标准化流&#xff08;Continuous Normalizing Flows&#xff09;生成式的隐轨迹时序模型&#xff08;A generative latent function time-series model&#xff09;这篇文章有多个版本&#xff0c;在最初的版…

嵌入式系统IO体系简述

前言&#xff1a; CPU的主要职责是负责运算&#xff0c;而计算机是需要各种外设的&#xff0c;否则无法和人进行交互。早期x86体系的CPU&#xff0c;需要使用前端总线&#xff08;fsb&#xff09;和北桥芯片相连&#xff0c;北桥再和南桥相连。南北桥是一种架构的划分&#xff…

数据结构与算法——算法分析(3)

算法的时间复杂度计算 算法基本操作执行的次数还会随着问题输入的数据集不同而不同 最坏时间复杂度&#xff1a;在最坏的情况下&#xff0c;算法的时间复杂度 平均时间复杂度&#xff1a;所有可能输入在等概率的情况下算法的期望运行时间 最好时间复杂度&#xff1a;在最好的…

企业内训方案|数据治理/项目管理/敏捷项目管理/产品管理

企业内训方案|数据治理/项目管理/敏捷项目管理/产品管理 》》数据治理 数据管理基础 数据处理伦理 数据治理 数据架构 数据建模和设计 数据安全 数据集成和互操作 文件和内容管理 参考数据和主数据 数据仓库和商务智能 元数据管理 数据质量 大数据和数据科学 数据管理成熟度评…

网络协议HTTP:了解Web及网络基础

文章整理自图书图解Http第一章&#xff1a;使用Http协议访问Web第二章&#xff1a;Http的诞生第三章&#xff1a;网络基础TCP/IP协议一&#xff1a;应用层二&#xff1a;传输层三&#xff1a;网络层四&#xff1a;链路层五&#xff1a;TCP/IP通信传输流第四章&#xff1a;IP、T…

http与https的区别我真的知道吗

之前每次看到类似“http与https的区别&#xff1f;”的问题时&#xff0c;都会自己思考一下答案&#xff0c;好像只是浅显地知道https比http安全&#xff0c;但究竟为什么更安全&#xff0c;却又似乎说不出个所以然&#xff0c;或者说很多细节地方自己都是不清楚的。为了搞清楚…

Linux权限shell命令以及运行原理

文章目录一、Linux权限的概念二、Linux权限管理2.1.文件访问者的分类&#xff08;角色&#xff09;2.2文件属性2.3文件访问权限的相关设置方法2.4访问者角色的修改2.5目录权限含义2.6默认权限三、粘滞位四、 shell命令以及运行原理一、Linux权限的概念 权限的概念通常是指行事…

ffmpeg录制H265格式的桌面视频

ffmpeg本身不支持H265&#xff0c;如果需要支持&#xff0c;需要事先编译出libx265&#xff0c;读者可以到libx265的官方网站https://www.videolan.org/developers/x265.html上找到下载地址&#xff0c;本人下载的是x265_3.5.tar.gz。 编译libx265时&#xff0c;定位到其目录下…

java基础 网络编程

网络编程概念&#xff1a; 让程序可以和网络上的其他设备中的程序进行数据交互。 网络通信基本模式&#xff1a; CS&#xff1a;Client-Server 自己写客户端和服务器交流 BS&#xff1a;Browser/Server 通过浏览器和服务器交流 实现网络编程关键的三要素…

python中的函数与变量

一、函数python中函数的基本格式则为:def函数名参数名函数体返回&#xff0c;python作为一门面向对象的语言&#xff0c;同样可分为类函数、实例函数。 # 定义一个函数 def add(x, y):"""函数的说明:param x: 参数x的作用:param y: 参数y的作用:return: 函数返…

碱性环境吸钯树脂技术

汞和贵金属的选择性去除回收离子交换树脂 Tulsimer CH-95S 是一款为了从工业废水中去除回收汞和贵金属而开发的螯合树脂。 Tulsimer CH-95S是一款拥有聚乙烯异硫脲官能基的大孔树脂&#xff0c;这种树脂对汞有的选择性。它也选择其他的贵金属&#xff0c;如黄金&#xff0c;铂…

消息收发弹性——生产集群如何解决大促场景消息收发的弹性降本诉求

作者&#xff1a;宸罡 产品介绍—什么是消息收发弹性 大家好&#xff0c;我是来自阿里云云原生消息团队的赖福智&#xff0c;花名宸罡&#xff0c;今天来给大家分享下阿里云 RocketMQ5.0 实例的消息弹性收发功能&#xff0c;并且通过该功能生产集群是如果解决大促场景消息收发…

JS in CSS:一键支持响应式布局

前言 如今网速不再成为适配移动端时选择响应式设计的限制因素&#xff0c;在资源充足的条件下&#xff0c;针对各端各自设计应用界面能达到应用最佳用户体验&#xff0c;毕竟不同类型的设备交互体验是不同的&#xff0c;但在团队前端资源拮据时&#xff0c;相比无脑自适应&…

基于Java+jquery+SpringMVC校园网站平台设计和实现

基于JavajquerySpringMVC校园网站平台设计和实现 博主介绍&#xff1a;5年java开发经验&#xff0c;专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 超级帅帅吴 Java毕设项目精品实战案例《500套》 欢迎点赞 收藏 ⭐留言 文末获取源码联…