0%

Type接口知识

Type的子类和子接口列表:

Class 实现 Type接口。

Class 是一个原始类型,Class的对象表示JVM的一个类或者接口,每个Java类在jvm都表现为一个Class对象

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

  1. Type getRawType()** 返回参数化类型中的原始类型,例如List 的原始类型为 List
  2. Type[] getActualTypeArguments() 获取参数化类型中的类型变量或者实际类型列表。 例如: Map<Integer,String> 的实际泛型列表是Integer,String 。 注意点: 返回类型是Type 可能存在多层嵌套情况。
  3. Type getOwnerType() 返回类型所属的类型

TypeVariable 表示的是类型变量,用来反映在JVM编译改泛型前的信息

例如: List<T> 中的T 就是类型变量,它在编译时需要转换成一个具体的类型才能正常使用。 

该接口常用方法有三个:

  1. Type[] getBounds() 获取类型变量的上边界(未声明情况默认为Object)
  2. D getGenericDeclaration() 获取声明类型变量的原始类型:例如:Class Test 的原始类型是 Test
  3. String getName() 获取在源码中定义的名字,上例中 就是 K

GenericArrayType 表示: 是数组类型且组成元素是: ParameterizedType或者TypeVariable

该接口方法:Type getGenericComponentType()
表示数组的组成元素

WildcardType 表示通配符泛型,例如: ?extends Number 或者 ? supper Integer

该接口有俩方法:

  1. Type[] getUpperBounds() 返回泛型变量的上界
  2. Type[] getLowerBounds() 返回泛型变量的下界

Welcome to my other publishing channels