ResolvableType,可解决的数据类型。它为java语言中的所有类型提供了相同的数据结构,其内部封装了一个java.lang.reflect.Type类型的对象。
在讲解这个数据结构之前,首先要了解一些预备知识,我们不妨思考如下2个问题:
- 在java语法中,哪些元素可以代表一种类型?
- 在java语法中,哪些元素具有类型?
在jdk中,Type接口代表一种类型,所有的具体类型都需要实现这个接口。
从图中可以看出,java语法中的类型可以分为五大类:组件类型为参数化类型或类型变量的数组、参数化类型、通配符表达式类型、类型变量以及所有定义的Class(每个类都是一个具体的类型)。除Class类以外的4个接口是jdk1.5以后出现的,因为单纯的Class类无法描述泛型信息。
public class TypeDemo<T> {
// GenericArrayType:组件类型为类型变量的数组
public T[] a;
// GenericArrayType:组件类型为参数化类型的数组
public List<?>[] b;
// ParameterizedType:参数化类型
// List<? extends Object>携带的"? extends Object"
// 即通配符表达式,也就是WildcardType