Class 的继承关系如下:
public final
class Class<T> implements java.io.Serializable,
java.lang.reflect.GenericDeclaration,
java.lang.reflect.Type,
java.lang.reflect.AnnotatedElement
Class一共继承了四个接口,这里主要关注Type这个接口(Serializable也需要注意,说明Class类是可以实现序列化的),接下来看看Type的源码,
public interface Type {
}
Type是一个空实现,他是Java中所有类型的父类型。Type有4个直接子接口,分别为:GenericArrayType、ParameterizedType、TypeVariable、WildcardType,还有一个直接实现类,就是Class。那么它们分别是什么作用呢?
(1)GenericArrayType
表示一种元素类型是参数化类型或者类型变量的数组类型,比如List<>[],T[]这种。
(2)ParameterizedType
表示参数化类型,比如List<T>,List<String>。
(3)TypeVariable
表示类型变量,比如T。
(4)WildcardType
表示一种通配符类型表达式,比如? super T。