获得泛型类的形式参数

  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中泛型类的类型参数?相关推荐

  1. java中无法推断类型参数_Java 10中的本地类型推断,或者如果它像鸭子一样嘎嘎叫...

    java中无法推断类型参数 最近,Oracle采用了一种新策略,即每六个月发布一次新的语言版本. 该策略假定只有每个第3版都将提供长期支持或LTS. 快速说明: 具有LTS的当前版本是Java 8: ...

  2. java中无法推断类型参数_Java中的推断异常

    java中无法推断类型参数 借用和窃取其他语言的概念和想法总是很高兴的. Scala的Option是我真正喜欢的一个主意,因此我用Java编写了一个实现. 它包装了一个可能为null或不为null的对 ...

  3. java 泛型详解、Java中的泛型方法、 java泛型详解

    本文参考java 泛型详解.Java中的泛型方法. java泛型详解 概述 泛型在java中有很重要的地位,在面向对象编程及各种设计模式中有非常广泛的应用. 什么是泛型?为什么要使用泛型? 泛型,即& ...

  4. Java中泛型的使用

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.概述 二.泛型分类 1.泛型类 2.泛型接口 3.泛型方法 3.1 泛型方法的基本用法 参考文档 前言 提示:这里 ...

  5. java中数值023是什么类型_【Java 教程(原创)】023.参数传值——引用类型参数的传值...

    马上注册,结交更多好友,享用更多功能^_^ 您需要 登录 才可以下载或查看,没有帐号?立即注册 x 本帖最后由 零度非安全 于 2017-3-12 14:03 编辑 点击图片穿越到 索引帖,听说有惊喜 ...

  6. java中调用数组参数_java中如何调用带有数组类型参数的存储过程

    java中如何调用带有数组类型参数的存储过程 关注:95  答案:3  mip版 解决时间 2021-01-28 00:39 提问者万丈深渊 2021-01-27 14:00 不知道java中java ...

  7. java中属性加参数_java – 具有类型参数的注释属性

    我认为这是可能的,但它需要大量的语言规范的补充,这是没有道理的. 首先,对于你枚举的例子,你可以使用Class扩展枚举>>选项. Class?还有另一个问题?扩展枚举>选项:因为En ...

  8. Java 中的语法糖,真甜。

    点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 我们在日常开发中经常会使用到诸如泛型.自动拆箱和装箱.内部 ...

  9. java中什么时候不能用泛型_java中泛型的正确使用姿势

    image.png 泛型是Java中一个非常重要的知识点,在Java集合类框架中泛型被广泛应用.利用好泛型,在系统架构中是一把利器. 泛型类 先看一个例子,restful架构中,需要定义api接口返回 ...

最新文章

  1. cf round #421 div2 D. Mister B and PR Shifts
  2. C语言桶排序Bucket sort算法(附完整源码)
  3. 11g crsctl start/stop crs 和 crsctl start/stop cluster 的关系
  4. hdu3549(网络流入门题-最大流的Ford-Fulkerson算法)
  5. uni-app 更新包提示HTML5+Runtime缺少升级包manifest.json中配置的模块:payment
  6. Linux、CentOS简单搭建虚拟主机
  7. 从 4 个月到 7 天:Netflix 开源自家框架 Metaflow,性能像坐上了火箭
  8. powerbi输入数据_与内部共享 Power BI 仪表板和报表
  9. c++获取ctrl+v内容_处理文档时,快捷键「Ctrl+E」的 8 大妙用
  10. Python脚本自动化运维网络设备
  11. 固定资产管理系统项目总结
  12. 微博指数导出csv文件下载说明
  13. Sql Server数据库的作用与概述
  14. 是什么在影响研究生的痛苦指数?
  15. ldrex strex
  16. 李呈祥:bilibili在湖仓一体查询加速上的实践与探索
  17. mysql 查询 唯一_Mysql中如何查询所有唯一记录
  18. js使用策略模式实现表单验证
  19. C语言温度转换窗体,C语言1_1:温度转换
  20. c++新经典—c++基本语言

热门文章

  1. python好学-所有人都说Python 简单易学,为何你觉得难?
  2. 怎么自学python自动化测试-Python实现性能自动化测试竟然如此简单
  3. python进阶免费-菜鸟世界 -python进阶---生成器
  4. python语言入门m-Python -m参数原理及使用方法解析
  5. python开发需要掌握哪些知识-Python的10个基础知识点,新手必须背下来!
  6. python写错了怎么更改-Python中修改字符串的四种方法
  7. python菜鸟教程h-Python 命令行参数
  8. 基于android os 5.1,Android 5.1.1版氢OS快速体验
  9. markdown引入代码_人人都会的Markdown
  10. 结构型模式之Proxy模式