1 JAVA的Type类型体系
先了解下java的Type类型体系,Type是所有类型(原生类型-Class、参数化类型-Parameterizedtype、数组类型-GenericArrayType、类型变量-TypeVariable、基本类型-Class)的共同接口;前两篇反射和注解讲到的Class就是Type的一实现类
Type下面又有四个子接口类ParameterizedType、TypeVariable、GenericArrayType、WildcardType
List表示泛型,E是TypeVariable类型,List则是ParameterizedType(参数化类型),List里的String称为实际参数类型
具体化泛型中的类型时,可以使用 ? extends 或 ? super来表示继承关系;如List<\? extends Data\>
,而里面的 ? 称为通配符类型
GenericArrayType 表示一种元素类型是ParameterizedType(参数化类型)或者TypeVariable(类型变量)的数组类型,如T[] 或者 List[]
注解是JDK1.5才出现了的,为了表示被注解的类型的,加入AnnotatedElement类型,字面意思就是被注解的元素。JDK1.8又有了AnnotatedType将Type和被注解元素的概念关联起来。
AnnotatedType也有四个子接口,和Type的四个子接口一一对应,如:ParameterizedType类型被注解则被编译器解析成AnnotatedParameterizedType: @AnTest("list")List<String>list
2 泛型的概念
Java 泛型(generics)是JDK1.5中引入的一个新特性,其本质是参数化类型,解决不确定具体对象类型的问题;其所操作的数据类型被指定为一个参数(type parameter)这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛