Java的基本思想之一是萬事萬物即對象,類也是一種對象。可是類是什麼對象呢?Java中的類是java.lang.Class的實例化對象,這被成爲類類型。java
//java.lang.Class類中的的主要方法以下數組
下面是Java1.8 API中java.lang.Class類中的方法:函數
va.lang中Class Class <T>
java.lang.Object繼承的java.lang.Class<T>
類型參數:
T - 由此Class對象建模的類的類型。 例如,String.class的類型是Class <String>。 若是正在建模的類未知,請使用Class <?>。編碼
全部已實現的接口:
Serializable,AnnotatedElement,GenericDeclaration,Type對象
類定義
public final class Class<T> extends Object implements Serializable, GenericDeclaration, Type, AnnotatedElement繼承
類Class的實例表示正在運行的Java應用程序中的類和接口。 枚舉是一種類,註釋是一種接口。 每一個數組也屬於一個類,它反映爲一個Class對象,由具備相同元素類型和維數的全部數組共享。 原始Java類型(boolean,byte,char,short,int,long,float和double)以及關鍵字void也表示爲Class對象。接口
類沒有公共構造函數。 相反,類對象由Java虛擬機在加載類時自動構造,並經過調用類加載器中的defineClass方法。資源
如下示例使用Class對象來打印對象的類名:
void printClassName(Object obj) {
System.out.println("The class of " + obj +
" is " + obj.getClass().getName());
}字符串
也能夠使用類文字獲取命名類型(或void)的Class對象。 請參閱Java™語言規範的第15.8.2節。 例如:
System.out.println("The name of class Foo is: "+Foo.class.getName());get
方法摘要:
修飾符和類型 方法和描述
<U> Class<? extends U> asSubclass(Class<U> clazz)
轉換此Class對象以表示由指定的類對象表示的類的子類。
T cast(Object obj)
將對象強制轉換爲此Class對象所表示的類或接口。
boolean desiredAssertionStatus()
若是要在調用此方法時初始化,則返回將分配給此類的斷言狀態。
static Class<?> forName(String className)
返回與具備給定字符串名稱的類或接口關聯的Class對象。
static Class <?> forName(String name,boolean initialize,ClassLoader loader)
使用給定的類加載器返回與具備給定字符串名稱的類或接口關聯的Class對象。
AnnotatedType[] getAnnotatedInterfaces()
返回AnnotatedType對象的數組,這些對象表示使用類型來指定此Class對象所表示的實體的超接口。
AnnotatedType getAnnotatedSuperclass()
返回AnnotatedType對象,該對象表示使用類型來指定此Class對象所表示的實體的超類。
<A extends Annotation> A getAnnotation(Class<A> annotationClass)
若是存在這樣的註釋,則返回指定類型的此元素的註釋,不然返回null。
Annotation[] getAnnotations()
返回此元素上存在的註釋。
<A extends Annotation> A[] getAnnotationsByType(Class<A> annotationClass)
返回與此元素關聯的註釋。
String getCanonicalName()
返回Java語言規範定義的基礎類的規範名稱。
Class<?>[] getClasses()
返回一個數組,其中包含Class對象,這些對象表示做爲此Class對象所表示的類的成員的全部公共類和接口。
ClassLoader getClassLoader()
返回類的類加載器。
Class<?> getComponentType()
返回表示數組的組件類型的Class。
Constructor<T> getConstructor(Class<?>... parameterTypes)
返回一個Constructor對象,該對象反映此Class對象所表示的類的指定公共構造函數。
Constructor<?>[] getConstructors()
返回一個包含Constructor對象的數組,這些對象反映此Class對象所表示的類的全部公共構造函數。
<A extends Annotation> A getDeclaredAnnotation(Class<A> annotationClass)
若是直接存在這樣的註釋,則返回指定類型的此元素的註釋,不然返回null。
Annotation[] getDeclaredAnnotations()
返回直接出如今此元素上的註釋。
<A extends Annotation> A[] getDeclaredAnnotationsByType(Class<A> annotationClass)
若是此類註釋直接存在或間接存在,則返回指定類型的此元素的註釋。
Class<?>[] getDeclaredClasses()
返回Class對象的數組,這些對象反映聲明爲此Class對象所表示的類的成員的全部類和接口。
Constructor<T> getDeclaredConstructor(Class<?>... parameterTypes)
返回一個Constructor對象,該對象反映此Class對象所表示的類或接口的指定構造函數。
Constructor<?>[] getDeclaredConstructors()
返回Constructor對象的數組,這些對象反映由此Class對象表示的類聲明的全部構造函數。
Field getDeclaredField(String name)
返回一個Field對象,該對象反映此Class對象所表示的類或接口的指定聲明字段。
Field[] getDeclaredFields()
返回Field對象的數組,這些對象反映由此Class對象表示的類或接口聲明的全部字段。
Method getDeclaredMethod(String name, Class<?>... parameterTypes)
返回一個Method對象,該對象反映此Class對象所表示的類或接口的指定聲明方法。
Method[] getDeclaredMethods()
返回一個數組,其中包含反映此Class對象所表示的類或接口的全部聲明方法的Method對象,包括public,protected,default(包)訪問和私有方法,但不包括繼承的方法。
Class<?> getDeclaringClass()
若是此Class對象表示的類或接口是另外一個類的成員,則返回表示聲明它的類的Class對象。
Class<?> getEnclosingClass()
返回基礎類的直接封閉類。
Constructor<?> getEnclosingConstructor()
若是此Class對象表示構造函數中的本地或匿名類,則返回一個Constructor對象,該對象表示基礎類的直接封閉構造函數。
Method getEnclosingMethod()
若是此Class對象表示方法中的本地或匿名類,則返回表示基礎類的直接封閉方法的Method對象。
T[] getEnumConstants()
返回此枚舉類的元素,若是此Class對象不表示枚舉類型,則返回null。
Field getField(String name)
返回一個Field對象,該對象反映此Class對象所表示的類或接口的指定公共成員字段。
Field[] getFields()
返回一個包含Field對象的數組,這些對象反映此Class對象所表示的類或接口的全部可訪問公共字段。
Type[] getGenericInterfaces()
返回表示由此對象表示的類或接口直接實現的接口的Types。
Type getGenericSuperclass()
返回表示此Class表示的實體(類,接口,基本類型或void)的直接超類的Type。
Class<?>[] getInterfaces()
肯定由此對象表示的類或接口實現的接口。
Method getMethod(String name, Class<?>... parameterTypes)
返回一個Method對象,該對象反映此Class對象所表示的類或接口的指定公共成員方法。
Method[] getMethods()
返回一個包含Method對象的數組,這些對象反映此Class對象所表示的類或接口的全部公共方法,包括由類或接口聲明的那些以及從超類和超接口繼承的那些。
int getModifiers()
返回此類或接口的Java語言修飾符,以整數編碼。
String getName()
以String形式返回此Class對象表示的實體名稱(類,接口,數組類,基本類型或void)。
Package getPackage()
獲取此類的包。
ProtectionDomain getProtectionDomain()
返回此類的ProtectionDomain。
URL getResource(String name)
查找具備給定名稱的資源。
InputStream getResourceAsStream(String name)
查找具備給定名稱的資源。
Object[] getSigners()
獲取此類的簽名者。
String getSimpleName()
返回源代碼中給出的基礎類的簡單名稱。
Class<? super T> getSuperclass()
返回表示此Class表示的實體(類,接口,基本類型或void)的超類的Class。
String getTypeName()
返回此類型名稱的信息字符串。
TypeVariable<Class<T>>[] getTypeParameters()
返回TypeVariable對象的數組,這些對象表示由此GenericDeclaration對象以聲明順序表示的泛型聲明聲明的類型變量。
boolean isAnnotation()
若是此Class對象表示註釋類型,則返回true。boolean isAnnotationPresent(Class <?extends Annotation> annotationClass)若是此元素上存在指定類型的註釋,則返回true,不然返回false。
boolean isAnonymousClass()
當且僅當基礎類是匿名類時返回true。
boolean isArray()
肯定此Class對象是否表示數組類。
boolean isAssignableFrom(Class<?> cls)
肯定此Class對象表示的類或接口是否與指定的Class參數表示的類或接口相同,或者是它們的超類或超接口。
boolean isEnum()
當且僅當此類在源代碼中聲明爲枚舉時返回true。
boolean isInstance(Object obj)
肯定指定的Object是否與此Class表示的對象分配兼容。
boolean isInterface()
肯定指定的Class對象是否表示接口類型。
boolean isLocalClass()
當且僅當基礎類是本地類時返回true。
boolean isMemberClass()
當且僅當底層類是成員類時返回true。
boolean isPrimitive()
肯定指定的Class對象是否表示基本類型。
boolean isSynthetic()
若是此類是合成類,則返回true; 不然返回false。
T newInstance()
建立此Class對象表示的類的新實例。
String toGenericString()
返回描述此Class的字符串,包括有關修飾符和類型參數的信息。
String toString() 將對象轉換爲字符串。