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函数式编程


文章目录

    • Type类


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

Type类

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

java反射之Type接口_第1张图片

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

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

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

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

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

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

  • 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() 返回泛型变量类型的下边界

你可能感兴趣的:(java基础,java,反射)