Class 的繼承關(guān)系如下:
public final
class Class<T> implements java.io.Serializable,
java.lang.reflect.GenericDeclaration,
java.lang.reflect.Type,
java.lang.reflect.AnnotatedElement
Class一共繼承了四個(gè)接口爽锥,這里主要關(guān)注Type這個(gè)接口(Serializable也需要注意,說(shuō)明Class類(lèi)是可以實(shí)現(xiàn)序列化的)畔柔,接下來(lái)看看Type的源碼氯夷,
public interface Type {
}
Type是一個(gè)空實(shí)現(xiàn),他是Java中所有類(lèi)型的父類(lèi)型靶擦。Type有4個(gè)直接子接口腮考,分別為:GenericArrayType雇毫、ParameterizedType、TypeVariable踩蔚、WildcardType棚放,還有一個(gè)直接實(shí)現(xiàn)類(lèi),就是Class馅闽。那么它們分別是什么作用呢飘蚯?
(1)GenericArrayType
表示一種元素類(lèi)型是參數(shù)化類(lèi)型或者類(lèi)型變量的數(shù)組類(lèi)型,比如List<>[]福也,T[]這種孝冒。
(2)ParameterizedType
表示參數(shù)化類(lèi)型,比如List<T>拟杉,List<String>庄涡。
(3)TypeVariable
表示類(lèi)型變量,比如T搬设。
(4)WildcardType
表示一種通配符類(lèi)型表達(dá)式穴店,比如? super T。