java反射之Type接口

系列文章目录

第一章 万事万物皆对象
第二章 java构造器
第三章 java访问权限
第四章 java初始化
第五章 java继承
第六章 java重载与重写
第七章 java接口和抽象类
第八章 java数组
第九章 java内部类
第十章 java时间操作
第十一章 final关键字
第十二章 java字符串
第十三章 java异常
第十四章 java泛型
第十五章 java IO操作
第十六章 java NIO操作
第十七章 java zip压缩
第十八章 java反射
第十九章 java反射之Type接口
第二十章 java8流式操作
第二十一章 java8函数式编程


文章目录


原文链接 https://zhhll.icu/2020/java基础/反射/2.反射之Type/

Type类

Type接口是所有类型的父接口,有四个子接口和一个实现类。

在这里插入图片描述

  • Class类比较常见,表示的是原始类型。表示的Java类在JVM里表现为一个Class对象

  • ParameterizedType表示的是参数化类型,如List这种带有泛型的类型。

    ParameterizedType接口中常用的方法有三个,分别为

    • Type getRawType() 返回参数化类型中的原始类型,如List的原始类型为List

    • Type[] getActualTypeArguments() 获取参数化类型的类型变量或是实际类型列表,如List的参数化类型列表为String,对于Map<String,Integer>中参数化列表为String和Integer

    • Type getOwnerType() 返回的是类型所属的类型,这个所属类型就像是 Map.Entry<K,V>的所属类型是Map<K,V>

  • TypeVariable表示的是类型变量,用来反应在JVM编译该泛型前的信息。例如List中T就是类型变量,它在编译时需要被转换为一个具体的类型后才能正常使用。

    该接口有三个常用的方法,分别为:

    • Type[] getBounds() 获取类型变量的上边界,如果没有明确声明上边界则默认为Object。class Test中K的上边界就是Person

    • D getGenericDeclaration() 获取声明该类型变量的原始类型,例如class Test中的原始类型就是Test

    • String getName() 获取在源码中定义的名字,例如class Test中为K

  • GenericArrayType表示的是数组类型且组成元素是ParameterizedType或TypeVariable,例如List[]或T[]

    • 该接口只有一个方法,Type getGenericComponentType() 返回数组的组成元素类型
  • WildcardType表示的是通配符泛型,例如 ? extends Number 和 ? super Integer

    • Type[] getUpperBounds() 返回泛型变量的上边界
    • Type[] getLowerBounds() 返回泛型变量类型的下边界
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

拾光师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值