如何获得Java中泛型类的类型参数?
获得泛型类的形式参数
Java中提供了Class接口用于描述类的运行时信息。此外,还提供了Type接口用于描述类的类型信息。Type接口有多个子类,包括Class、TypeVariable、ParameterizedType等,分别表示运行时类、类参数、参数化类型。获得泛型类的形式参数代码如下:
ArrayList<Integer> arrayList = new ArrayList<Integer>();TypeVariable<?>[] typeVariables = arrayList.getClass().getTypeParameters();System.out.println(Arrays.toString(typeVariables)); // E
复制代码
利用Class类中的getTypeParameters()方法可以获得描述形式参数的TypeVariable数组。
获得泛型类的实际参数
v实际上,泛型类的实际参数是不可获取的,因为在运行期进行了类型擦除。但有一种情况,可以简介获取泛型类的实际参数,代码如下:
ArrayList<Integer> arrayList = new ArrayList<Integer>() {/*** */private static final long serialVersionUID = 1L;};Type type = arrayList.getClass().getGenericSuperclass();ParameterizedType parameterizedType = (ParameterizedType) type;for (Type t : parameterizedType.getActualTypeArguments()) {System.out.println(t.getTypeName()); // java.lang.Integer}
复制代码
注意,代码中创建了一个匿名内部了对象arrayList。通过它的getClass()方法获得了匿名内部类对应的Class对象,再借助getGenericSuperClass()方法获得泛型父类的类型信息。
转载于:https://juejin.im/post/5c25983ee51d45229f76f7fa
如何获得Java中泛型类的类型参数?相关推荐
- java中无法推断类型参数_Java 10中的本地类型推断,或者如果它像鸭子一样嘎嘎叫...
java中无法推断类型参数 最近,Oracle采用了一种新策略,即每六个月发布一次新的语言版本. 该策略假定只有每个第3版都将提供长期支持或LTS. 快速说明: 具有LTS的当前版本是Java 8: ...
- java中无法推断类型参数_Java中的推断异常
java中无法推断类型参数 借用和窃取其他语言的概念和想法总是很高兴的. Scala的Option是我真正喜欢的一个主意,因此我用Java编写了一个实现. 它包装了一个可能为null或不为null的对 ...
- java 泛型详解、Java中的泛型方法、 java泛型详解
本文参考java 泛型详解.Java中的泛型方法. java泛型详解 概述 泛型在java中有很重要的地位,在面向对象编程及各种设计模式中有非常广泛的应用. 什么是泛型?为什么要使用泛型? 泛型,即& ...
- Java中泛型的使用
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.概述 二.泛型分类 1.泛型类 2.泛型接口 3.泛型方法 3.1 泛型方法的基本用法 参考文档 前言 提示:这里 ...
- java中数值023是什么类型_【Java 教程(原创)】023.参数传值——引用类型参数的传值...
马上注册,结交更多好友,享用更多功能^_^ 您需要 登录 才可以下载或查看,没有帐号?立即注册 x 本帖最后由 零度非安全 于 2017-3-12 14:03 编辑 点击图片穿越到 索引帖,听说有惊喜 ...
- java中调用数组参数_java中如何调用带有数组类型参数的存储过程
java中如何调用带有数组类型参数的存储过程 关注:95 答案:3 mip版 解决时间 2021-01-28 00:39 提问者万丈深渊 2021-01-27 14:00 不知道java中java ...
- java中属性加参数_java – 具有类型参数的注释属性
我认为这是可能的,但它需要大量的语言规范的补充,这是没有道理的. 首先,对于你枚举的例子,你可以使用Class扩展枚举>>选项. Class?还有另一个问题?扩展枚举>选项:因为En ...
- Java 中的语法糖,真甜。
点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 我们在日常开发中经常会使用到诸如泛型.自动拆箱和装箱.内部 ...
- java中什么时候不能用泛型_java中泛型的正确使用姿势
image.png 泛型是Java中一个非常重要的知识点,在Java集合类框架中泛型被广泛应用.利用好泛型,在系统架构中是一把利器. 泛型类 先看一个例子,restful架构中,需要定义api接口返回 ...
最新文章
- cf round #421 div2 D. Mister B and PR Shifts
- C语言桶排序Bucket sort算法(附完整源码)
- 11g crsctl start/stop crs 和 crsctl start/stop cluster 的关系
- hdu3549(网络流入门题-最大流的Ford-Fulkerson算法)
- uni-app 更新包提示HTML5+Runtime缺少升级包manifest.json中配置的模块:payment
- Linux、CentOS简单搭建虚拟主机
- 从 4 个月到 7 天:Netflix 开源自家框架 Metaflow,性能像坐上了火箭
- powerbi输入数据_与内部共享 Power BI 仪表板和报表
- c++获取ctrl+v内容_处理文档时,快捷键「Ctrl+E」的 8 大妙用
- Python脚本自动化运维网络设备
- 固定资产管理系统项目总结
- 微博指数导出csv文件下载说明
- Sql Server数据库的作用与概述
- 是什么在影响研究生的痛苦指数?
- ldrex strex
- 李呈祥:bilibili在湖仓一体查询加速上的实践与探索
- mysql 查询 唯一_Mysql中如何查询所有唯一记录
- js使用策略模式实现表单验证
- C语言温度转换窗体,C语言1_1:温度转换
- c++新经典—c++基本语言
热门文章
- python好学-所有人都说Python 简单易学,为何你觉得难?
- 怎么自学python自动化测试-Python实现性能自动化测试竟然如此简单
- python进阶免费-菜鸟世界 -python进阶---生成器
- python语言入门m-Python -m参数原理及使用方法解析
- python开发需要掌握哪些知识-Python的10个基础知识点,新手必须背下来!
- python写错了怎么更改-Python中修改字符串的四种方法
- python菜鸟教程h-Python 命令行参数
- 基于android os 5.1,Android 5.1.1版氢OS快速体验
- markdown引入代码_人人都会的Markdown
- 结构型模式之Proxy模式