新聞中心
Class

java.lang.Object
|---java.lang.Class
public final class Class
extends Object
implements Serializable, GenericDeclaration, Type, AnnotatedElement Class 類的實(shí)例表示正在運(yùn)行的 Java 應(yīng)用程序中的類和接口。 枚舉是一種類,注解是一種接口。 每個(gè)數(shù)組還屬于一個(gè)類,該類反映為一個(gè) Class 對(duì)象,該對(duì)象由具有相同元素類型和維數(shù)的所有數(shù)組共享。 原始 Java 類型(boolean、byte、char、short、int、long、float 和 double)和關(guān)鍵字 void 也表示為 Class 對(duì)象。
類沒(méi)有公共構(gòu)造函數(shù)。 相反,Class 對(duì)象是由 Java 虛擬機(jī)在加載類時(shí)自動(dòng)構(gòu)造的,并通過(guò)調(diào)用類加載器中的 defineClass 方法來(lái)構(gòu)造。
以下示例使用 Class 對(duì)象來(lái)打印對(duì)象的類名:
void printClassName(Object obj) {
System.out.println("The class of " + obj +
" is " + obj.getClass().getName());
}也可以使用類字面量獲取命名類型(或 void)的 Class 對(duì)象。 請(qǐng)參閱《Java? 語(yǔ)言規(guī)范》的第 15.8.2 節(jié)。 例如:
System.out.println("類Foo的名稱是:"+Foo.class.getName());
方法總結(jié)
| 修飾符和類型 | 方法 | 描述 |
|---|---|---|
| Class extends U> | asSubclass(Class clazz) | 轉(zhuǎn)換此 Class 對(duì)象以表示由指定類對(duì)象表示的類的子類。 |
| T | cast(Object obj) | 將對(duì)象強(qiáng)制轉(zhuǎn)換為此 Class 對(duì)象表示的類或接口。 |
| boolean | desiredAssertionStatus() | 如果要在調(diào)用此方法時(shí)對(duì)其進(jìn)行初始化,則返回將分配給此類的斷言狀態(tài)。 |
| static Class> | forName(String className) | 返回與具有給定字符串名稱的類或接口關(guān)聯(lián)的 Class 對(duì)象。 |
| static Class> | forName(String name, boolean initialize, ClassLoader loader) | 使用給定的類加載器,返回與具有給定字符串 nme 的類或接口關(guān)聯(lián)的 Class 對(duì)象。 |
| A | getAnnotation(Class annotationClass) | 如果存在這樣的注釋,則返回此元素的指定類型的注釋,否則返回 null。 |
| Annotation[] | getAnnotations() | 返回此元素上存在的注釋。 |
| A[] | getAnnotationsByType(Class annotationClass) | 返回與此元素關(guān)聯(lián)的注釋。 |
| String | getCanonicalName() | 返回 Java 語(yǔ)言規(guī)范定義的基礎(chǔ)類的規(guī)范名稱。 |
| Class>[] | getClasses() | 返回一個(gè)數(shù)組,其中包含表示所有公共類和接口的 Class 對(duì)象,這些公共類和接口是此 Class 對(duì)象表示的類的成員。 |
| ClassLoader | getClassLoader() | 返回類的類加載器。 |
| Class> | getComponentType() | 返回表示數(shù)組組件類型的 Class。 |
| ConstructorT | getConstructor(Class>... parameterTypes) | 返回一個(gè) Constructor 對(duì)象,該對(duì)象反映此 Class 對(duì)象表示的類的指定公共構(gòu)造函數(shù)。 |
| Constructor>[] | getConstructors() | 返回一個(gè)包含 Constructor 對(duì)象的數(shù)組,該對(duì)象反映了此 Class 對(duì)象表示的類的所有公共構(gòu)造函數(shù)。 |
| A | getDeclaredAnnotation(Class annotationClass) | 如果直接存在這樣的注釋,則返回此元素的指定類型的注釋,否則返回 null。 |
| Annotation[] | getDeclaredAnnotations() | 返回此元素上直接存在的注釋。 |
| Class>[] | getDeclaredClasses() | 返回一個(gè) Class 對(duì)象數(shù)組,反映聲明為此 Class 對(duì)象表示的類的成員的所有類和接口。 |
| ConstructorT | getDeclaredConstructor(Class>... parameterTypes) | 返回一個(gè) Constructor 對(duì)象,該對(duì)象反映此 Class 對(duì)象表示的類或接口的指定構(gòu)造函數(shù)。 |
| Constructor>[] | getDeclaredConstructors() | 返回一個(gè) Constructor 對(duì)象數(shù)組,反映由該 Class 對(duì)象表示的類聲明的所有構(gòu)造函數(shù)。 |
| Field | getDeclaredField(String name) | 返回一個(gè)反映此 Class 對(duì)象表示的類或接口的指定聲明字段的 Field 對(duì)象。 |
| Field[] | getDeclaredFields() | 返回一個(gè) Field 對(duì)象數(shù)組,反映由此 Class 對(duì)象表示的類或接口聲明的所有字段。 |
| Method | getDeclaredMethod(String name, Class>... parameterTypes) | 返回一個(gè) Method 對(duì)象,該對(duì)象反映此 Class 對(duì)象表示的類或接口的指定聲明方法。 |
| Method[] | getDeclaredMethods() | 返回一個(gè)包含 Method 對(duì)象的數(shù)組,該對(duì)象反映了此 Class 對(duì)象表示的類或接口的所有聲明方法,包括公共、受保護(hù)、默認(rèn)(包)訪問(wèn)和私有方法,但不包括繼承方法。 |
| Class> | getDeclaringClass() | 如果此 Class 對(duì)象表示的類或接口是另一個(gè)類的成員,則返回表示在其中聲明它的類的 Class 對(duì)象。 |
| Class> | getEnclosingClass() | 返回基礎(chǔ)類的直接封閉類。 |
| Constructor> | getEnclosingConstructor() | 如果此 Class 對(duì)象表示構(gòu)造函數(shù)中的本地或匿名類,則返回表示基礎(chǔ)類的直接封閉構(gòu)造函數(shù)的 Constructor 對(duì)象。 |
| Method | getEnclosingMethod() | 如果此 Class 對(duì)象表示方法中的本地或匿名類,則返回一個(gè) Method 對(duì)象,該對(duì)象表示基礎(chǔ)類的直接封閉方法。 |
| T[] | getEnumConstants() | 如果此 Class 對(duì)象不表示枚舉類型,則返回此枚舉類的元素或 null。 |
| Field | getField(String name) | 返回一個(gè)反映此 Class 對(duì)象表示的類或接口的指定公共成員字段的 Field 對(duì)象。 |
| Field[] | getFields() | 返回一個(gè)包含 Field 對(duì)象的數(shù)組,該數(shù)組反映了此 Class 對(duì)象表示的類或接口的所有可訪問(wèn)公共字段。 |
| Type[] | getGenericInterfaces() | 返回表示由該對(duì)象表示的類或接口直接實(shí)現(xiàn)的接口的類型。 |
| Type | getGenericSuperclass() | 返回表示此 Class 所表示的實(shí)體(類、接口、原始類型或 void)的直接超類的 Type。 |
| Class>[] | getInterfaces() | 確定此對(duì)象表示的類或接口實(shí)現(xiàn)的接口。 |
| Method | getMethod(String name, Class>... parameterTypes) | 返回一個(gè) Method 對(duì)象,該對(duì)象反映此 Class 對(duì)象表示的類或接口的指定公共成員方法。 |
| Method[] | getMethods() | 返回一個(gè)包含 Method 對(duì)象的數(shù)組,該對(duì)象反映了由此 Class 對(duì)象表示的類或接口的所有公共方法,包括由類或接口聲明的那些以及從超類和超接口繼承的那些。 |
| int | getModifiers() | 返回此類或接口的 Java 語(yǔ)言修飾符,以整數(shù)編碼。 |
| String | getName() | 以字符串形式返回此 Class 對(duì)象表示的實(shí)體(類、接口、數(shù)組類、原始類型或 void)的名稱。 |
| Package | getPackage() | 獲取此類的包。 |
| ProtectionDomain | getProtectionDomain() | 返回此類的 ProtectionDomain。 |
| URL | getResource(String name) | 查找具有給定名稱的資源。 |
| InputStream | getResourceAsStream(String name) | 查找具有給定名稱的資源。 |
| Object[] | getSigners() | 獲取此類的簽名者。 |
| String | getSimpleName() | 返回源代碼中給出的基礎(chǔ)類的簡(jiǎn)單名稱。 |
| Class super T> | getSuperclass() | 返回表示此 Class 所表示的實(shí)體(類、接口、原始類型或 void)的超類的 Class。 |
| String | getTypeName() | 返回此類型名稱的信息字符串。 |
| TypeVariableClassT[] | getTypeParameters() | 按聲明順序返回一個(gè) TypeVariable 對(duì)象數(shù)組,這些對(duì)象表示由此 GenericDeclaration 對(duì)象表示的泛型聲明所聲明的類型變量。 |
| boolean | isAnnotation() | 如果此 Class 對(duì)象表示注釋類型,則返回 true。 |
| boolean | isAnnotationPresent(Class extends Annotation> annotationClass) | 如果此元素上存在指定類型的注釋,則返回 true,否則返回 false。 |
| boolean | isAnonymousClass() | 當(dāng)且僅當(dāng)基礎(chǔ)類是匿名類時(shí)才返回 true。 |
| boolean | isArray() | 確定此 Class 對(duì)象是否表示數(shù)組類。 |
| boolean | isAssignableFrom(Class> cls) | 確定此 Class 對(duì)象表示的類或接口是否與指定的 Class 參數(shù)表示的類或接口相同,或者是其超類或超接口。 |
| boolean | isEnum() | 當(dāng)且僅當(dāng)此類在源代碼中聲明為枚舉時(shí)才返回 true。 |
| boolean | isInstance(Object obj) | 確定指定的 Object 是否與該 Class 表示的對(duì)象賦值兼容。 |
| boolean | isInterface() | 確定指定的 Class 對(duì)象是否表示接口類型。 |
| boolean | isLocalClass() | 當(dāng)且僅當(dāng)基礎(chǔ)類是本地類時(shí)返回 true。 |
| boolean | isMemberClass() | 當(dāng)且僅當(dāng)基礎(chǔ)類是成員類時(shí)才返回 true。 |
| boolean | isPrimitive() | 確定指定的 Class 對(duì)象是否表示原始類型。 |
| boolean | isSynthetic() | 如果此類是合成類,則返回 true; 否則返回 false。 |
| T | newInstance() | 創(chuàng)建由此 Class 對(duì)象表示的類的新實(shí)例。 |
| String | toGenericString() | 返回描述該類的字符串,包括有關(guān)修飾符和類型參數(shù)的信息。 |
| String | toString() | 將對(duì)象轉(zhuǎn)換為字符串。 |
| 從接口 java.lang.reflect.AnnotatedElement 繼承的方法 |
|---|
| getDeclaredAnnotationsByType |
| 從類 java.lang.Object 繼承的方法 |
|---|
| clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
方法詳情
toString
public String toString()
將對(duì)象轉(zhuǎn)換為字符串。 字符串表示是字符串“類”或“接口”,后跟一個(gè)空格,然后是由 getName 返回的格式的類的完全限定名稱。 如果此 Class 對(duì)象表示原始類型,則此方法返回原始類型的名稱。 如果此 Class 對(duì)象表示 void,則此方法返回“void”。
覆蓋:
類 Object 中的 toString
返回:
此類對(duì)象的字符串表示形式。
toGenericString
public String toGenericString()
返回描述該類的字符串,包括有關(guān)修飾符和類型參數(shù)的信息。 字符串被格式化為類型修飾符列表(如果有),然后是類型的種類(基本類型和類的空字符串,枚舉,接口或@interface,視情況而定),然后是類型的名稱,然后是 類型的類型參數(shù)的尖括號(hào)逗號(hào)分隔列表(如果有)。 空格用于將修飾符彼此分開(kāi),并將任何修飾符與類型分開(kāi)。 修飾符按規(guī)范順序出現(xiàn)。 如果沒(méi)有類型參數(shù),則省略類型參數(shù)列表。
請(qǐng)注意,由于正在生成有關(guān)類型的運(yùn)行時(shí)表示的信息,因此可能存在原始源代碼上不存在的修飾符或原始源代碼上的非法修飾符。
返回:
描述該類的字符串,包括有關(guān)修飾符和類型參數(shù)的信息
forName
public static Class> forName(String className) throws ClassNotFoundException
返回與具有給定字符串名稱的類或接口關(guān)聯(lián)的 Class 對(duì)象。 調(diào)用此方法等效于:
Class.forName(className, true, currentLoader)
其中 currentLoader 表示當(dāng)前類的定義類加載器。
例如,以下代碼片段返回名為 java.lang.Thread 的類的運(yùn)行時(shí)類描述符:
類 t = Class.forName("java.lang.Thread")
調(diào)用 forName("X") 會(huì)導(dǎo)致初始化名為 X 的類。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| className | 所需類的完全限定名稱。 |
返回:
具有指定名稱的類的 Class 對(duì)象。
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| LinkageError | 如果鏈接失敗 |
| ExceptionInInitializerError | 如果此方法引發(fā)的初始化失敗 |
| ClassNotFoundException | 如果找不到類 |
forName
public static Class> forName(String name, boolean initialize, ClassLoader loader) throws ClassNotFoundException
使用給定的類加載器返回與具有給定字符串名稱的類或接口關(guān)聯(lián)的 Class 對(duì)象。給定類或接口的完全限定名稱(與 getName 返回的格式相同),此方法嘗試定位、加載和鏈接類或接口。指定的類加載器用于加載類或接口。如果參數(shù)加載器為空,則通過(guò)引導(dǎo)類加載器加載該類。僅當(dāng) initialize 參數(shù)為 true 且之前未初始化時(shí),才會(huì)初始化該類。
如果 name 表示原始類型或 void,將嘗試在名稱為 name 的未命名包中查找用戶定義的類。因此,此方法不能用于獲取任何表示原始類型或 void 的 Class 對(duì)象。
如果 name 表示一個(gè)數(shù)組類,則數(shù)組類的組件類型被加載但不被初始化。
例如,在實(shí)例方法中,表達(dá)式:
Class.forName("Foo")
相當(dāng)于:
Class.forName("Foo", true, this.getClass().getClassLoader())
請(qǐng)注意,此方法會(huì)引發(fā)與 Java 語(yǔ)言規(guī)范第 12.2、12.3 和 12.4 節(jié)中指定的加載、鏈接或初始化相關(guān)的錯(cuò)誤。請(qǐng)注意,此方法不檢查其調(diào)用者是否可以訪問(wèn)所請(qǐng)求的類。
如果加載器為空,并且存在安全管理器,并且調(diào)用者的類加載器不為空,則此方法以 RuntimePermission("getClassLoader") 權(quán)限調(diào)用安全管理器的 checkPermission 方法,以確??梢栽L問(wèn)引導(dǎo)類加載器.
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| name | 所需類的完全限定名 |
| initialize | 如果為真,則該類將被初始化。 請(qǐng)參閱 Java 語(yǔ)言規(guī)范的第 12.4 節(jié)。 |
| loader | 必須從中加載類的類加載器 |
返回:
表示所需類的類對(duì)象
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| LinkageError | 如果鏈接失敗 |
| ExceptionInInitializerError | 如果此方法引發(fā)的初始化失敗 |
| ClassNotFoundException | 如果指定的類加載器無(wú)法找到該類 |
newInstance
public T newInstance() throws IllegalAccessException, InstantiationException
創(chuàng)建由此 Class 對(duì)象表示的類的新實(shí)例。 該類被實(shí)例化為一個(gè)帶有空參數(shù)列表的新表達(dá)式。 如果尚未初始化該類,則將其初始化。
請(qǐng)注意,此方法傳播由 nullary 構(gòu)造函數(shù)引發(fā)的任何異常,包括已檢查的異常。 使用此方法可以有效地繞過(guò)編譯器執(zhí)行的編譯時(shí)異常檢查。 Constructor.newInstance 方法通過(guò)將構(gòu)造函數(shù)拋出的任何異常包裝在(已檢查)InvocationTargetException 中來(lái)避免此問(wèn)題。
返回:
此對(duì)象表示的類的新分配實(shí)例。
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| IllegalAccessException | 如果類或其空構(gòu)造函數(shù)不可訪問(wèn)。 |
| InstantiationException | 如果此 Class 表示抽象類、接口、數(shù)組類、原始類型或 void; 或者如果該類沒(méi)有空構(gòu)造函數(shù); 或者如果實(shí)例化由于某種其他原因而失敗。 |
| ExceptionInInitializerError | 如果此方法引發(fā)的初始化失敗。 |
| SecurityException | 如果存在安全管理器 s,并且調(diào)用者的類加載器與當(dāng)前類的類加載器不同或其祖先,并且 SecurityManager#checkPackageAccess 的調(diào)用拒絕訪問(wèn)此類的包。 |
isInstance
public boolean isInstance(Object obj)
確定指定的 Object 是否與該 Class 表示的對(duì)象賦值兼容。此方法是 Java 語(yǔ)言 instanceof 運(yùn)算符的動(dòng)態(tài)等效方法。如果指定的 Object 參數(shù)為非 null 并且可以強(qiáng)制轉(zhuǎn)換為此 Class 對(duì)象表示的引用類型而不引發(fā) ClassCastException,則該方法返回 true。否則返回 false。
具體來(lái)說(shuō),如果此 Class 對(duì)象表示已聲明的類,則如果指定的 Object 參數(shù)是表示的類(或其任何子類)的實(shí)例,則此方法返回 true;否則返回 false。如果此 Class 對(duì)象表示一個(gè)數(shù)組類,如果指定的 Object 參數(shù)可以通過(guò)恒等轉(zhuǎn)換或擴(kuò)展引用轉(zhuǎn)換轉(zhuǎn)換為數(shù)組類的對(duì)象,則此方法返回 true;否則返回 false。如果此 Class 對(duì)象表示一個(gè)接口,則如果指定 Object 參數(shù)的類或任何超類實(shí)現(xiàn)此接口,則此方法返回 true;否則返回 false。如果此 Class 對(duì)象表示原始類型,則此方法返回 false。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| obj | 要檢查的對(duì)象 |
返回:
如果 obj 是此類的實(shí)例,則為 true
isAssignableFrom
public boolean isAssignableFrom(Class> cls)
確定此 Class 對(duì)象表示的類或接口是否與指定的 Class 參數(shù)表示的類或接口相同,或者是其超類或超接口。 如果是,則返回 true; 否則返回false。 如果此 Class 對(duì)象表示原始類型,則如果指定的 Class 參數(shù)正是此 Class 對(duì)象,則此方法返回 true; 否則返回false。
具體來(lái)說(shuō),該方法測(cè)試指定的 Class 參數(shù)表示的類型是否可以通過(guò)恒等轉(zhuǎn)換或擴(kuò)展引用轉(zhuǎn)換轉(zhuǎn)換為該 Class 對(duì)象表示的類型。 有關(guān)詳細(xì)信息,請(qǐng)參閱 Java 語(yǔ)言規(guī)范,第 5.1.1 和 5.1.4 節(jié)。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| cls | 要檢查的類對(duì)象 |
返回:
布爾值,指示是否可以將 cls 類型的對(duì)象分配給此類的對(duì)象
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| NullPointerException | 如果指定的 Class 參數(shù)為空。 |
isInterface
public boolean isInterface()
確定指定的 Class 對(duì)象是否表示接口類型。
返回:
如果此對(duì)象表示一個(gè)接口,則為 true; 否則為假。
isArray
public boolean isArray()
確定此 Class 對(duì)象是否表示數(shù)組類。
返回:
如果此對(duì)象表示一個(gè)數(shù)組類,則為 true; 否則為假。
isPrimitive
public boolean isPrimitive()
確定指定的 Class 對(duì)象是否表示原始類型。
有九個(gè)預(yù)定義的 Class 對(duì)象來(lái)表示八種原始類型和 void。 它們由 Java 虛擬機(jī)創(chuàng)建,并且與它們所代表的原始類型具有相同的名稱,即 boolean、byte、char、short、int、long、float 和 double。
這些對(duì)象只能通過(guò)以下公共靜態(tài)最終變量訪問(wèn),并且是此方法返回 true 的唯一 Class 對(duì)象。
返回:
當(dāng)且僅當(dāng)此類表示原始類型時(shí)才為真
isAnnotation
public boolean isAnnotation()
如果此 Class 對(duì)象表示注釋類型,則返回 true。 請(qǐng)注意,如果此方法返回 true,isInterface() 也將返回 true,因?yàn)樗凶⑨岊愋鸵彩墙涌凇?/p>
返回:
如果此類對(duì)象表示注釋類型,則為 true; 否則為假
isSynthetic
public boolean isSynthetic()
如果此類是合成類,則返回 true; 否則返回 false。
返回:
當(dāng)且僅當(dāng)此類是 Java 語(yǔ)言規(guī)范定義的合成類時(shí)才為真。
getName
public String getName()
以字符串形式返回此 Class 對(duì)象表示的實(shí)體(類、接口、數(shù)組類、原始類型或 void)的名稱。
如果該類對(duì)象表示非數(shù)組類型的引用類型,則返回該類的二進(jìn)制名稱,如《Java? 語(yǔ)言規(guī)范》所指定。
如果此類對(duì)象表示原始類型或 void,則返回的名稱是與原始類型或 void 對(duì)應(yīng)的 Java 語(yǔ)言關(guān)鍵字相等的 String。
如果該類對(duì)象表示一類數(shù)組,則名稱的內(nèi)部形式由元素類型的名稱組成,前面有一個(gè)或多個(gè)“[”字符,表示數(shù)組嵌套的深度。 元素類型名稱的編碼如下:
類或接口名稱 classname 是上面指定的類的二進(jìn)制名稱。
例子:
String.class.getName() returns "java.lang.String" byte.class.getName() returns "byte" (new Object[3]).getClass().getName() returns "[Ljava.lang.Object;" (new int[3][4][5][6][7][8][9]).getClass().getName() returns "[[[[[[[I" 返回:
此對(duì)象表示的類或接口的名稱。
getClassLoader
public ClassLoader getClassLoader()
返回類的類加載器。 一些實(shí)現(xiàn)可能使用 null 來(lái)表示引導(dǎo)類加載器。 如果此類由引導(dǎo)類加載器加載,則此方法將在此類實(shí)現(xiàn)中返回 null。
如果存在安全管理器,并且調(diào)用者的類加載器不為空,并且調(diào)用者的類加載器與請(qǐng)求其類加載器的類的類加載器不同或其祖先,則此方法調(diào)用安全管理器的 checkPermission 方法 具有 RuntimePermission("getClassLoader") 權(quán)限,以確??梢栽L問(wèn)該類的類加載器。
如果此對(duì)象表示原始類型或 void,則返回 null。
返回:
加載此對(duì)象表示的類或接口的類加載器。
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| SecurityException | 如果存在安全管理器并且其 checkPermission 方法拒絕訪問(wèn)該類的類加載器。 |
getTypeParameters
public TypeVariableClassT[] getTypeParameters()
按聲明順序返回一個(gè) TypeVariable 對(duì)象數(shù)組,這些對(duì)象表示由此 GenericDeclaration 對(duì)象表示的泛型聲明所聲明的類型變量。 如果基礎(chǔ)泛型聲明未聲明類型變量,則返回長(zhǎng)度為 0 的數(shù)組。
指定者:
接口 GenericDeclaration 中的 getTypeParameters
返回:
表示此泛型聲明所聲明的類型變量的 TypeVariable 對(duì)象數(shù)組
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| GenericSignatureFormatError | 如果此泛型聲明的泛型簽名不符合《Java? 虛擬機(jī)規(guī)范》中指定的格式 |
getSuperclass
public Class super T> getSuperclass()
返回表示此 Class 所表示的實(shí)體(類、接口、原始類型或 void)的超類的 Class。 如果此 Class 表示 Object 類、接口、原始類型或 void,則返回 null。 如果此對(duì)象表示數(shù)組類,則返回表示 Object 類的 Class 對(duì)象。
返回:
此對(duì)象表示的類的超類。
getGenericSuperclass
public Type getGenericSuperclass()
返回表示此 Class 所表示的實(shí)體(類、接口、原始類型或 void)的直接超類的 Type。
如果超類是參數(shù)化類型,則返回的 Type 對(duì)象必須準(zhǔn)確反映源代碼中使用的實(shí)際類型參數(shù)。 如果之前沒(méi)有創(chuàng)建過(guò)表示超類的參數(shù)化類型,則會(huì)創(chuàng)建它。 有關(guān)參數(shù)化類型的創(chuàng)建過(guò)程的語(yǔ)義,請(qǐng)參見(jiàn) ParameterizedType 的聲明。 如果此 Class 表示 Object 類、接口、原始類型或 void,則返回 null。 如果此對(duì)象表示數(shù)組類,則返回表示 Object 類的 Class 對(duì)象。
返回:
此對(duì)象表示的類的超類
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| GenericSignatureFormatError | 如果泛型類簽名不符合《Java? 虛擬機(jī)規(guī)范》中指定的格式 |
| TypeNotPresentException | 如果泛型超類引用了不存在的類型聲明 |
| MalformedParameterizedTypeException | 如果泛型超類引用了因任何原因無(wú)法實(shí)例化的參數(shù)化類型 |
getPackage
public Package getPackage()
獲取此類的包。 該類的類加載器用于查找包。 如果該類是由引導(dǎo)類加載器加載的,則搜索從 CLASSPATH 加載的包集以找到該類的包。 如果此類的類加載器沒(méi)有創(chuàng)建包對(duì)象,則返回 Null。
僅當(dāng)信息在伴隨類的清單中定義并且類加載器使用清單中的屬性創(chuàng)建包實(shí)例時(shí),包才具有版本和規(guī)范的屬性。
返回:
類的包,如果歸檔或代碼庫(kù)中沒(méi)有可用的包信息,則返回 null。
getInterfaces
public Class>[] getInterfaces()
確定此對(duì)象表示的類或接口實(shí)現(xiàn)的接口。
如果此對(duì)象表示一個(gè)類,則返回值是一個(gè)數(shù)組,其中包含表示該類實(shí)現(xiàn)的所有接口的對(duì)象。數(shù)組中接口對(duì)象的順序?qū)?yīng)于該對(duì)象所代表的類的聲明的implements子句中接口名稱的順序。例如,給定聲明:
Shimmer 類實(shí)現(xiàn) FloorWax、DessertTopping { ... }
假設(shè) s 的值是 Shimmer 的一個(gè)實(shí)例;表達(dá)式的值:
s.getClass().getInterfaces()[0]
是表示接口 FloorWax 的 Class 對(duì)象;和價(jià)值:
s.getClass().getInterfaces()[1]
是表示接口 DessertTopping 的 Class 對(duì)象。
如果此對(duì)象表示一個(gè)接口,則該數(shù)組包含表示該接口擴(kuò)展的所有接口的對(duì)象。數(shù)組中接口對(duì)象的順序?qū)?yīng)于該對(duì)象表示的接口聲明的extends子句中接口名稱的順序。
如果此對(duì)象表示一個(gè)沒(méi)有實(shí)現(xiàn)接口的類或接口,則該方法返回一個(gè)長(zhǎng)度為 0 的數(shù)組。
如果此對(duì)象表示原始類型或 void,則該方法返回長(zhǎng)度為 0 的數(shù)組。
如果此 Class 對(duì)象表示數(shù)組類型,則接口 Cloneable 和 java.io.Serializable 將按該順序返回。
返回:
由此類實(shí)現(xiàn)的接口數(shù)組。
getGenericInterfaces
public Type[] getGenericInterfaces()
返回表示由該對(duì)象表示的類或接口直接實(shí)現(xiàn)的接口的類型。
如果超接口是參數(shù)化類型,則為其返回的 Type 對(duì)象必須準(zhǔn)確反映源代碼中使用的實(shí)際類型參數(shù)。如果之前沒(méi)有創(chuàng)建過(guò)代表每個(gè)超接口的參數(shù)化類型,則創(chuàng)建它。有關(guān)參數(shù)化類型的創(chuàng)建過(guò)程的語(yǔ)義,請(qǐng)參見(jiàn) ParameterizedType 的聲明。
如果此對(duì)象表示一個(gè)類,則返回值是一個(gè)數(shù)組,其中包含表示該類實(shí)現(xiàn)的所有接口的對(duì)象。數(shù)組中接口對(duì)象的順序?qū)?yīng)于該對(duì)象所代表的類的聲明的implements子句中接口名稱的順序。在數(shù)組類的情況下,接口 Cloneable 和 Serializable 按該順序返回。
如果此對(duì)象表示一個(gè)接口,則該數(shù)組包含表示該接口直接擴(kuò)展的所有接口的對(duì)象。數(shù)組中接口對(duì)象的順序?qū)?yīng)于該對(duì)象表示的接口聲明的extends子句中接口名稱的順序。
如果此對(duì)象表示一個(gè)沒(méi)有實(shí)現(xiàn)接口的類或接口,則該方法返回一個(gè)長(zhǎng)度為 0 的數(shù)組。
如果此對(duì)象表示原始類型或 void,則該方法返回長(zhǎng)度為 0 的數(shù)組。
返回:
由此類實(shí)現(xiàn)的接口數(shù)組
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| GenericSignatureFormatError | 如果泛型類簽名不符合《Java? 虛擬機(jī)規(guī)范》中指定的格式 |
| TypeNotPresentException | 如果任何通用超接口引用了不存在的類型聲明 |
| MalformedParameterizedTypeException | 如果任何通用超接口引用了因任何原因無(wú)法實(shí)例化的參數(shù)化類型 |
getComponentType
public Class> getComponentType()
返回表示數(shù)組組件類型的 Class。 如果此類不表示數(shù)組類,則此方法返回 null。
返回:
如果此類是數(shù)組,則表示此類的組件類型的 Class
getModifiers
public int getModifiers()
返回此類或接口的 Java 語(yǔ)言修飾符,以整數(shù)編碼。 修飾符由 Java 虛擬機(jī)的 public、protected、private、final、static、abstract 和 interface 常量組成; 它們應(yīng)該使用類修飾符的方法進(jìn)行解碼。
如果底層類是一個(gè)數(shù)組類,那么它的 public、private 和 protected 修飾符與其組件類型的修飾符相同。 如果此類表示原始類型或 void,則其 public 修飾符始終為 true,其 protected 和 private 修飾符始終為 false。 如果此對(duì)象表示數(shù)組類、原始類型或 void,則其 final 修飾符始終為 true,其接口修飾符始終為 false。 本規(guī)范未確定其其他修飾符的值。
修飾符編碼在 Java 虛擬機(jī)規(guī)范的表 4.1 中定義。
返回:
表示此類修飾符的 int
getSigners
public Object[] getSigners()
獲取此類的簽名者。
返回:
此類的簽名者,如果沒(méi)有簽名者,則返回 null。 特別是,如果此對(duì)象表示原始類型或 void,則此方法返回 null。
getEnclosingMethod
public Method getEnclosingMethod() throws SecurityException
如果此 Class 對(duì)象表示方法中的本地或匿名類,則返回一個(gè) Method 對(duì)象,該對(duì)象表示基礎(chǔ)類的直接封閉方法。 否則返回 null。 特別是,如果基礎(chǔ)類是直接由類型聲明、實(shí)例初始化程序或靜態(tài)初始化程序包圍的本地或匿名類,則此方法返回 null。
返回:
底層類的直接封閉方法,如果該類是本地或匿名類; 否則為空。
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| SecurityException | 如果存在安全管理器 s 并且滿足以下任一條件:調(diào)用者的類加載器與封閉類的類加載器不同并且使用 RuntimePermission("accessDeclaredMembers") 調(diào)用 SecurityManager#checkPermission 方法拒絕訪問(wèn) 對(duì)于封閉類中的方法調(diào)用者的類加載器與封閉類的類加載器不同或其祖先,并且調(diào)用 SecurityManager#checkPackageAccess 拒絕訪問(wèn)封閉類的包 |
getEnclosingConstructor
public Constructor> getEnclosingConstructor() throws SecurityException
如果此 Class 對(duì)象表示構(gòu)造函數(shù)中的本地或匿名類,則返回表示基礎(chǔ)類的直接封閉構(gòu)造函數(shù)的 Constructor 對(duì)象。 否則返回 null。 特別是,如果基礎(chǔ)類是直接由類型聲明、實(shí)例初始化程序或靜態(tài)初始化程序包圍的本地或匿名類,則此方法返回 null。
返回:
底層類的直接封閉構(gòu)造函數(shù),如果該類是本地或匿名類; 否則為空。
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| SecurityException | 如果存在安全管理器 s 并且滿足以下任一條件:調(diào)用者的類加載器與封閉類的類加載器不同并且使用 RuntimePermission("accessDeclaredMembers") 調(diào)用 SecurityManager#checkPermission 方法拒絕訪問(wèn) 對(duì)于封閉類中的構(gòu)造函數(shù),調(diào)用者的類加載器與封閉類的類加載器不同或不是其祖先,并且 SecurityManager#checkPackageAccess 的調(diào)用拒絕訪問(wèn)封閉類的包 |
getDeclaringClass
public Class> getDeclaringClass() throws SecurityException
如果此 Class 對(duì)象表示的類或接口是另一個(gè)類的成員,則返回表示在其中聲明它的類的 Class 對(duì)象。 如果此類或接口不是任何其他類的成員,則此方法返回 null。 如果此 Class 對(duì)象表示數(shù)組類、原始類型或 void,則此方法返回 null。
返回:
這個(gè)類的聲明類
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| SecurityException | 如果存在安全管理器 s,并且調(diào)用者的類加載器與聲明類的類加載器不同或其祖先,并且 SecurityManager#checkPackageAccess 的調(diào)用拒絕訪問(wèn)聲明類的包 |
getEnclosingClass
public Class> getEnclosingClass() throws SecurityException
返回基礎(chǔ)類的直接封閉類。 如果底層類是頂級(jí)類,則此方法返回 null。
返回:
基礎(chǔ)類的直接封閉類
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| SecurityException | 如果存在安全管理器 s,并且調(diào)用者的類加載器與封閉類的類加載器不同或其祖先,并且 SecurityManager#checkPackageAccess 的調(diào)用拒絕訪問(wèn)封閉類的包 |
getSimpleName
public String getSimpleName()
返回源代碼中給出的基礎(chǔ)類的簡(jiǎn)單名稱。 如果基礎(chǔ)類是匿名的,則返回一個(gè)空字符串。
數(shù)組的簡(jiǎn)單名稱是附加了“[]”的組件類型的簡(jiǎn)單名稱。 特別是組件類型為匿名的數(shù)組的簡(jiǎn)單名稱是“[]”。
返回:
底層類的簡(jiǎn)單名稱
getTypeName
public String getTypeName()
返回此類型名稱的信息字符串。
指定者:
接口類型中的getTypeName
返回:
此類型名稱的信息字符串
getCanonicalName
public String getCanonicalName()
返回 Java 語(yǔ)言規(guī)范定義的基礎(chǔ)類的規(guī)范名稱。 如果基礎(chǔ)類沒(méi)有規(guī)范名稱(即,如果它是本地或匿名類或組件類型沒(méi)有規(guī)范名稱的數(shù)組),則返回 null。
返回:
如果存在,則為基礎(chǔ)類的規(guī)范名稱,否則為 null。
isAnonymousClass
public boolean isAnonymousClass()
當(dāng)且僅當(dāng)基礎(chǔ)類是匿名類時(shí)才返回 true。
返回:
當(dāng)且僅當(dāng)此類是匿名類時(shí)才為真。
isLocalClass
public boolean isLocalClass()
當(dāng)且僅當(dāng)基礎(chǔ)類是本地類時(shí)返回 true。
返回:
當(dāng)且僅當(dāng)此類是本地類時(shí)才為真。
isMemberClass
public boolean isMemberClass()
當(dāng)且僅當(dāng)基礎(chǔ)類是成員類時(shí)才返回 true。
返回:
當(dāng)且僅當(dāng)此類是成員類時(shí)才為真。
getClasses
public Class>[] getClasses()
返回一個(gè)數(shù)組,其中包含表示所有公共類和接口的 Class 對(duì)象,這些公共類和接口是此 Class 對(duì)象表示的類的成員。 這包括從超類繼承的公共類和接口成員以及類聲明的公共類和接口成員。 如果此 Class 對(duì)象沒(méi)有公共成員類或接口,則此方法返回長(zhǎng)度為 0 的數(shù)組。 如果此 Class 對(duì)象表示原始類型、數(shù)組類或 void,則此方法還返回長(zhǎng)度為 0 的數(shù)組。
返回:
表示此類的公共成員的 Class 對(duì)象數(shù)組
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| SecurityException | 如果存在安全管理器 s,并且調(diào)用者的類加載器與當(dāng)前類的類加載器不同或其祖先,并且 SecurityManager#checkPackageAccess 的調(diào)用拒絕訪問(wèn)此類的包。 |
getFields
public Field[] getFields() throws SecurityException
返回一個(gè)包含 Field 對(duì)象的數(shù)組,該數(shù)組反映了此 Class 對(duì)象表示的類或接口的所有可訪問(wèn)公共字段。
如果此 Class 對(duì)象表示沒(méi)有可訪問(wèn)的公共字段的類或接口,則此方法返回長(zhǎng)度為 0 的數(shù)組。
如果此 Class 對(duì)象表示一個(gè)類,則此方法返回該類及其所有超類的公共字段。
如果此 Class 對(duì)象表示一個(gè)接口,則此方法返回該接口及其所有超接口的字段。
如果此 Class 對(duì)象表示數(shù)組類型、原始類型或 void,則此方法返回長(zhǎng)度為 0 的數(shù)組。
返回?cái)?shù)組中的元素沒(méi)有排序,也沒(méi)有任何特定的順序。
返回:
表示公共字段的 Field 對(duì)象數(shù)組
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| SecurityException | 如果存在安全管理器 s,并且調(diào)用者的類加載器與當(dāng)前類的類加載器不同或其祖先,并且 SecurityManager#checkPackageAccess 的調(diào)用拒絕訪問(wèn)此類的包。 |
getMethods
public Method[] getMethods() throws SecurityException
返回一個(gè)包含 Method 對(duì)象的數(shù)組,該對(duì)象反映了由此 Class 對(duì)象表示的類或接口的所有公共方法,包括由類或接口聲明的那些以及從超類和超接口繼承的那些。
如果此 Class 對(duì)象表示具有多個(gè)具有相同名稱和參數(shù)類型但返回類型不同的公共方法的類型,則返回的數(shù)組對(duì)于每個(gè)此類方法都有一個(gè) Method 對(duì)象。
如果此 Class 對(duì)象表示具有類初始化方法
如果此 Class 對(duì)象表示一個(gè)數(shù)組類型,則返回的數(shù)組具有一個(gè) Method 對(duì)象,用于該數(shù)組類型從 Object 繼承的每個(gè)公共方法。它不包含用于 clone() 的 Method 對(duì)象。
如果此 Class 對(duì)象表示一個(gè)接口,則返回的數(shù)組不包含任何來(lái)自 Object 的隱式聲明的方法。因此,如果在此接口或其任何超接口中沒(méi)有顯式聲明任何方法,則返回的數(shù)組的長(zhǎng)度為 0。(請(qǐng)注意,表示類的 Class 對(duì)象始終具有從 Object 繼承的公共方法。)
如果此 Class 對(duì)象表示原始類型或 void,則返回的數(shù)組的長(zhǎng)度為 0。
在此 Class 對(duì)象表示的類或接口的超接口中聲明的靜態(tài)方法不被視為類或接口的成員。
返回?cái)?shù)組中的元素沒(méi)有排序,也沒(méi)有任何特定的順序。
返回:
表示此類的公共方法的 Method 對(duì)象數(shù)組
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| SecurityException | 如果存在安全管理器 s,并且調(diào)用者的類加載器與當(dāng)前類的類加載器不同或其祖先,并且 SecurityManager#checkPackageAccess 的調(diào)用拒絕訪問(wèn)此類的包。 |
getConstructors
public Constructor>[] getConstructors() throws SecurityException
返回一個(gè)包含 Constructor 對(duì)象的數(shù)組,該對(duì)象反映了此 Class 對(duì)象表示的類的所有公共構(gòu)造函數(shù)。 如果類沒(méi)有公共構(gòu)造函數(shù),或者類是數(shù)組類,或者類反映原始類型或 void,則返回長(zhǎng)度為 0 的數(shù)組。 請(qǐng)注意,雖然此方法返回一個(gè) Constructor
返回:
表示此類的公共構(gòu)造函數(shù)的 Constructor 對(duì)象數(shù)組
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| SecurityException | 如果存在安全管理器 s,并且調(diào)用者的類加載器與當(dāng)前類的類加載器不同或其祖先,并且 SecurityManager#checkPackageAccess 的調(diào)用拒絕訪問(wèn)此類的包。 |
getField
public Field getField(String name) throws NoSuchFieldException, SecurityException
返回一個(gè)反映此 Class 對(duì)象表示的類或接口的指定公共成員字段的 Field 對(duì)象。 name 參數(shù)是一個(gè)字符串,指定所需字段的簡(jiǎn)單名稱。
要反射的場(chǎng)由下面的算法確定。 令 C 為該對(duì)象所代表的類或接口:
- 如果 C 聲明了一個(gè)指定名稱的公共字段,那就是要反映的字段。
- 如果在上面的步驟 1 中沒(méi)有找到任何字段,則該算法遞歸地應(yīng)用于 C 的每個(gè)直接超接口。直接超接口按照它們被聲明的順序進(jìn)行搜索。
- 如果在上面的步驟 1 和 2 中沒(méi)有找到字段,并且 C 具有超類 S,則在 S 上遞歸調(diào)用該算法。如果 C 沒(méi)有超類,則拋出 NoSuchFieldException。
如果這個(gè) Class 對(duì)象代表一個(gè)數(shù)組類型,那么這個(gè)方法沒(méi)有找到數(shù)組類型的長(zhǎng)度字段。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| name | 字段名稱 |
返回:
由名稱指定的此類的 Field 對(duì)象
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| NoSuchFieldException | 如果未找到具有指定名稱的字段。 |
| NullPointerException | 如果名稱為空 |
| SecurityException | 如果存在安全管理器 s,并且調(diào)用者的類加載器與當(dāng)前類的類加載器不同或其祖先,并且 SecurityManager#checkPackageAccess 的調(diào)用拒絕訪問(wèn)此類的包。 |
getMethod
public Method getMethod(String name, Class>... parameterTypes) throws NoSuchMethodException, SecurityException
返回一個(gè) Method 對(duì)象,該對(duì)象反映此 Class 對(duì)象表示的類或接口的指定公共成員方法。 name 參數(shù)是一個(gè)字符串,指定所需方法的簡(jiǎn)單名稱。 parameterTypes 參數(shù)是一個(gè) Class 對(duì)象數(shù)組,它們按照聲明的順序標(biāo)識(shí)方法的形式參數(shù)類型。如果 parameterTypes 為 null,則將其視為空數(shù)組。
如果名稱是“
- C 搜索匹配方法,定義如下。如果找到匹配的方法,則將其反映。
- 如果步驟 1 沒(méi)有找到匹配方法,則:
- 如果 C 是 Object 以外的類,則在 C 的超類上遞歸調(diào)用該算法。
- 如果 C 是類 Object,或者如果 C 是接口,則在 C 的超接口(如果有)中搜索匹配的方法。如果找到任何此類方法,則將其反映。
在類或接口 C 中找到匹配的方法:如果 C 聲明了一個(gè)具有指定名稱和完全相同的形參類型的公共方法,那就是反映的方法。如果在 C 中發(fā)現(xiàn)了多個(gè)這樣的方法,并且其中一個(gè)方法的返回類型比其他任何方法都更具體,則反映該方法;否則任意選擇其中一種方法。
請(qǐng)注意,一個(gè)類中可能有多個(gè)匹配方法,因?yàn)殡m然 Java 語(yǔ)言禁止一個(gè)類聲明具有相同簽名但返回類型不同的多個(gè)方法,但 Java 虛擬機(jī)不會(huì)。虛擬機(jī)中這種增加的靈活性可用于實(shí)現(xiàn)各種語(yǔ)言功能。例如,協(xié)變返回可以用橋接方法來(lái)實(shí)現(xiàn);橋接方法和被覆蓋的方法將具有相同的簽名,但返回類型不同。
如果這個(gè) Class 對(duì)象代表一個(gè)數(shù)組類型,那么這個(gè)方法找不到 clone() 方法。
在此 Class 對(duì)象表示的類或接口的超接口中聲明的靜態(tài)方法不被視為類或接口的成員。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| name | 方法的名稱 |
| parameterTypes | 參數(shù)列表 |
返回:
與指定名稱和 parameterTypes 匹配的 Method 對(duì)象
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| NoSuchMethodException | 如果沒(méi)有找到匹配的方法或者名稱是“ |
| NullPointerException | 如果名稱為空 |
| SecurityException | 如果存在安全管理器 s,并且調(diào)用者的類加載器與當(dāng)前類的類加載器不同或其祖先,并且 SecurityManager#checkPackageAccess 的調(diào)用拒絕訪問(wèn)此類的包。 |
getConstructor
public ConstructorT getConstructor(Class>... parameterTypes) throws NoSuchMethodException, SecurityException
返回一個(gè) Constructor 對(duì)象,該對(duì)象反映此 Class 對(duì)象表示的類的指定公共構(gòu)造函數(shù)。 parameterTypes 參數(shù)是一個(gè) Class 對(duì)象數(shù)組,它們按照聲明的順序標(biāo)識(shí)構(gòu)造函數(shù)的形式參數(shù)類型。 如果此 Class 對(duì)象表示在非靜態(tài)上下文中聲明的內(nèi)部類,則形式參數(shù)類型包括顯式封閉實(shí)例作為第一個(gè)參數(shù)。
要反映的構(gòu)造函數(shù)是此 Class 對(duì)象表示的類的公共構(gòu)造函數(shù),其形參類型與 parameterTypes 指定的類型匹配。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| parameterTypes | 參數(shù)數(shù)組 |
返回:
與指定 parameterTypes 匹配的公共構(gòu)造函數(shù)的 Constructor 對(duì)象
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| NoSuchMethodException | 如果沒(méi)有找到匹配的方法。 |
| SecurityException | 如果存在安全管理器 s,并且調(diào)用者的類加載器與當(dāng)前類的類加載器不同或其祖先,并且 SecurityManager#checkPackageAccess 的調(diào)用拒絕訪問(wèn)此類的包。 |
getDeclaredClasses
public Class>[] getDeclaredClasses() throws SecurityException
返回一個(gè) Class 對(duì)象數(shù)組,反映聲明為此 Class 對(duì)象表示的類的成員的所有類和接口。 這包括類聲明的公共、受保護(hù)、默認(rèn)(包)訪問(wèn)以及私有類和接口,但不包括繼承的類和接口。 如果類沒(méi)有將類或接口聲明為成員,或者如果此 Class 對(duì)象表示原始類型、數(shù)組類或 void,則此方法返回長(zhǎng)度為 0 的數(shù)組。
返回:
表示該類的所有聲明成員的 Class 對(duì)象數(shù)組
拋出:
| Throw名稱 | Throw描述 |
|---|---|
| SecurityException | 如果存在安全管理器 s 并且滿足以下任一條件:調(diào)用者的類加載器與此類的類加載器不同,并且使用 RuntimePermission("accessDeclaredMembers") 調(diào)用 SecurityManager#checkPermission 方法拒絕訪問(wèn) 此類中聲明的類調(diào)用者的類加載器與當(dāng)前類的類加載器不同或其祖先,并且 SecurityManager#checkPackageAccess 的調(diào)用拒絕訪問(wèn)此類的包 |
getDeclaredFields
public Field[] getDeclaredFields() throws SecurityException
返回一個(gè) Field 對(duì)象數(shù)組,反映由此 Class 對(duì)象表示的類或接口聲明的所有字段。 這包括公共、受保護(hù)、默認(rèn)(包)訪問(wèn)和私有字段,但不包括繼承的字段。
如果此 Class 對(duì)象表示沒(méi)有聲明字段的類或接口,則此方法返回長(zhǎng)度為 0 的數(shù)組。
如果此 Class 對(duì)象表示數(shù)組類型、原始類型或 void,則此方法返回長(zhǎng)度為 0 的數(shù)組。
返回?cái)?shù)組中的元素沒(méi)有排序,也沒(méi)有任何特定的順序。
返回:
表示該類的所有聲明字段的 Field 對(duì)象數(shù)組
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| SecurityException | 如果存在安全管理器 s 并且滿足以下任一條件:調(diào)用者的類加載器與此類的類加載器不同,并且使用 RuntimePermission("accessDeclaredMembers") 調(diào)用 SecurityManager#checkPermission 方法拒絕訪問(wèn) 此類中聲明的字段調(diào)用者的類加載器與當(dāng)前類的類加載器不同或其祖先,并且調(diào)用 SecurityManager#checkPackageAccess 拒絕訪問(wèn)此類的包 |
getDeclaredMethods
public Method[] getDeclaredMethods() throws SecurityException
返回一個(gè)包含 Method 對(duì)象的數(shù)組,該對(duì)象反映了此 Class 對(duì)象表示的類或接口的所有聲明方法,包括公共、受保護(hù)、默認(rèn)(包)訪問(wèn)和私有方法,但不包括繼承方法。
如果此 Class 對(duì)象表示具有多個(gè)已聲明的具有相同名稱和參數(shù)類型但返回類型不同的方法的類型,則返回的數(shù)組對(duì)于每個(gè)此類方法都有一個(gè) Method 對(duì)象。
如果此 Class 對(duì)象表示具有類初始化方法
如果此 Class 對(duì)象表示沒(méi)有聲明方法的類或接口,則返回的數(shù)組的長(zhǎng)度為 0。
如果此 Class 對(duì)象表示數(shù)組類型、原始類型或 void,則返回的數(shù)組的長(zhǎng)度為 0。
返回?cái)?shù)組中的元素沒(méi)有排序,也沒(méi)有任何特定的順序。
返回:
Method 對(duì)象的數(shù)組,表示該類的所有聲明的方法
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| SecurityException | 如果存在安全管理器 s 并且滿足以下任一條件:調(diào)用者的類加載器與此類的類加載器不同,并且使用 RuntimePermission("accessDeclaredMembers") 調(diào)用 SecurityManager#checkPermission 方法拒絕訪問(wèn) 此類中聲明的方法調(diào)用者的類加載器與當(dāng)前類的類加載器不同或其祖先,并且調(diào)用 SecurityManager#checkPackageAccess 拒絕訪問(wèn)此類的包 |
getDeclaredConstructors
public Constructor>[] getDeclaredConstructors() throws SecurityException
返回一個(gè) Constructor 對(duì)象數(shù)組,反映由該 Class 對(duì)象表示的類聲明的所有構(gòu)造函數(shù)。 這些是公共的、受保護(hù)的、默認(rèn)(包)訪問(wèn)和私有構(gòu)造函數(shù)。 返回的數(shù)組中的元素沒(méi)有排序,也沒(méi)有任何特定的順序。 如果該類具有默認(rèn)構(gòu)造函數(shù),則它包含在返回的數(shù)組中。 如果此 Class 對(duì)象表示接口、原始類型、數(shù)組類或 void,則此方法返回長(zhǎng)度為 0 的數(shù)組。
請(qǐng)參閱 Java 語(yǔ)言規(guī)范,第 8.2 節(jié)。
返回:
表示該類的所有已聲明構(gòu)造函數(shù)的 Constructor 對(duì)象數(shù)組
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| SecurityException | 如果存在安全管理器 s 并且滿足以下任一條件:調(diào)用者的類加載器與此類的類加載器不同,并且使用 RuntimePermission("accessDeclaredMembers") 調(diào)用 SecurityManager#checkPermission 方法拒絕訪問(wèn) 此類中聲明的構(gòu)造函數(shù)調(diào)用者的類加載器與當(dāng)前類的類加載器不同或其祖先,并且調(diào)用 SecurityManager#checkPackageAccess 拒絕訪問(wèn)此類的包 |
getDeclaredField
public Field getDeclaredField(String name) throws NoSuchFieldException, SecurityException
返回一個(gè)反映此 Class 對(duì)象表示的類或接口的指定聲明字段的 Field 對(duì)象。 name 參數(shù)是一個(gè)字符串,它指定所需字段的簡(jiǎn)單名稱。
如果這個(gè) Class 對(duì)象代表一個(gè)數(shù)組類型,那么這個(gè)方法沒(méi)有找到數(shù)組類型的長(zhǎng)度字段。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| name | 字段名稱 |
返回:
此類中指定字段的 Field 對(duì)象
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| NoSuchFieldException | 如果未找到具有指定名稱的字段。 |
| NullPointerException | 如果名稱為空 |
| SecurityException | 如果存在安全管理器 s 并且滿足以下任一條件:調(diào)用者的類加載器與此類的類加載器不同,并且使用 RuntimePermission("accessDeclaredMembers") 調(diào)用 SecurityManager#checkPermission 方法拒絕訪問(wèn) 聲明的字段調(diào)用者的類加載器與當(dāng)前類的類加載器不同或其祖先,并且調(diào)用 SecurityManager#checkPackageAccess 拒絕訪問(wèn)此類的包 |
getDeclaredMethod
public Method getDeclaredMethod(String name, Class>... parameterTypes) throws NoSuchMethodException, SecurityException
返回一個(gè) Method 對(duì)象,該對(duì)象反映此 Class 對(duì)象表示的類或接口的指定聲明方法。 name 參數(shù)是一個(gè)字符串,它指定所需方法的簡(jiǎn)單名稱,parameterTypes 參數(shù)是一個(gè) Class 對(duì)象數(shù)組,這些對(duì)象按照聲明的順序標(biāo)識(shí)方法的形式參數(shù)類型。 如果在一個(gè)類中聲明了多個(gè)具有相同參數(shù)類型的方法,并且其中一個(gè)方法的返回類型比其他任何方法都更具體,則返回該方法; 否則任意選擇其中一種方法。 如果名稱是“
如果這個(gè) Class 對(duì)象代表一個(gè)數(shù)組類型,那么這個(gè)方法找不到 clone() 方法。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| name | 方法的名稱 |
| parameterTypes | 參數(shù)數(shù)組 |
返回:
與指定名稱和參數(shù)匹配的此類方法的 Method 對(duì)象
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| NoSuchMethodException | 如果沒(méi)有找到匹配的方法。 |
| NullPointerException | 如果名稱為空 |
| SecurityException | 如果存在安全管理器 s 并且滿足以下任一條件:調(diào)用者的類加載器與此類的類加載器不同,并且使用 RuntimePermission("accessDeclaredMembers") 調(diào)用 SecurityManager#checkPermission 方法拒絕訪問(wèn) 聲明的方法調(diào)用者的類加載器與當(dāng)前類的類加載器不同或其祖先,并且調(diào)用 SecurityManager#checkPackageAccess 拒絕訪問(wèn)該類的包 |
getDeclaredConstructor
public ConstructorT getDeclaredConstructor(Class>... parameterTypes) throws NoSuchMethodException, SecurityException
返回一個(gè) Constructor 對(duì)象,該對(duì)象反映此 Class 對(duì)象表示的類或接口的指定構(gòu)造函數(shù)。 parameterTypes 參數(shù)是一個(gè) Class 對(duì)象數(shù)組,它們按照聲明的順序標(biāo)識(shí)構(gòu)造函數(shù)的形式參數(shù)類型。 如果此 Class 對(duì)象表示在非靜態(tài)上下文中聲明的內(nèi)部類,則形式參數(shù)類型包括顯式封閉實(shí)例作為第一個(gè)參數(shù)。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| parameterTypes | 參數(shù)數(shù)組 |
返回:
具有指定參數(shù)列表的構(gòu)造函數(shù)的 Constructor 對(duì)象
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| NoSuchMethodException | 如果沒(méi)有找到匹配的方法。 |
| SecurityException | 如果存在安全管理器 s 并且滿足以下任一條件:調(diào)用者的類加載器與此類的類加載器不同,并且使用 RuntimePermission("accessDeclaredMembers") 調(diào)用 SecurityManager#checkPermission 方法拒絕訪問(wèn) 聲明的構(gòu)造函數(shù)調(diào)用者的類加載器與當(dāng)前類的類加載器不同或其祖先,并且調(diào)用 SecurityManager#checkPackageAccess 拒絕訪問(wèn)此類的包 |


咨詢
建站咨詢
