鴻蒙OS Class

2022-05-09 17:54 更新

Class

java.lang.Object

|---java.lang.Class<T&

public final class Class<T>
extends Object
implements Serializable, GenericDeclaration, Type, AnnotatedElement

Class 類的實例表示正在運行的 Java 應(yīng)用程序中的類和接口。 枚舉是一種類,注解是一種接口。 每個數(shù)組還屬于一個類,該類反映為一個 Class 對象,該對象由具有相同元素類型和維數(shù)的所有數(shù)組共享。 原始 Java 類型(boolean、byte、char、short、int、long、float 和 double)和關(guān)鍵字 void 也表示為 Class 對象。

類沒有公共構(gòu)造函數(shù)。 相反,Class 對象是由 Java 虛擬機在加載類時自動構(gòu)造的,并通過調(diào)用類加載器中的 defineClass 方法來構(gòu)造。

以下示例使用 Class 對象來打印對象的類名:

void printClassName(Object obj) {
         System.out.println("The class of " + obj +
                            " is " + obj.getClass().getName());
}

也可以使用類字面量獲取命名類型(或 void)的 Class 對象。 請參閱《Java? 語言規(guī)范》的第 15.8.2 節(jié)。 例如:

System.out.println("類Foo的名稱是:"+Foo.class.getName());

方法總結(jié)

修飾符和類型 方法 描述
<U> Class<? extends U> asSubclass(Class<U> clazz) 轉(zhuǎn)換此 Class 對象以表示由指定類對象表示的類的子類。
T cast(Object obj) 將對象強制轉(zhuǎn)換為此 Class 對象表示的類或接口。
boolean desiredAssertionStatus() 如果要在調(diào)用此方法時對其進行初始化,則返回將分配給此類的斷言狀態(tài)。
static Class<?> forName(String className) 返回與具有給定字符串名稱的類或接口關(guān)聯(lián)的 Class 對象。
static Class<?> forName(String name, boolean initialize, ClassLoader loader) 使用給定的類加載器,返回與具有給定字符串 nme 的類或接口關(guān)聯(lián)的 Class 對象。
<A extends Annotation>A getAnnotation(Class<A> annotationClass) 如果存在這樣的注釋,則返回此元素的指定類型的注釋,否則返回 null。
Annotation[] getAnnotations() 返回此元素上存在的注釋。
<A extends Annotation>A[] getAnnotationsByType(Class<A> annotationClass) 返回與此元素關(guān)聯(lián)的注釋。
String getCanonicalName() 返回 Java 語言規(guī)范定義的基礎(chǔ)類的規(guī)范名稱。
Class<?>[] getClasses() 返回一個數(shù)組,其中包含表示所有公共類和接口的 Class 對象,這些公共類和接口是此 Class 對象表示的類的成員。
ClassLoader getClassLoader() 返回類的類加載器。
Class<?> getComponentType() 返回表示數(shù)組組件類型的 Class。
ConstructorT getConstructor(Class<?>... parameterTypes) 返回一個 Constructor 對象,該對象反映此 Class 對象表示的類的指定公共構(gòu)造函數(shù)。
Constructor<?>[] getConstructors() 返回一個包含 Constructor 對象的數(shù)組,該對象反映了此 Class 對象表示的類的所有公共構(gòu)造函數(shù)。
<A extends Annotation>A getDeclaredAnnotation(Class<A> annotationClass) 如果直接存在這樣的注釋,則返回此元素的指定類型的注釋,否則返回 null。
Annotation[] getDeclaredAnnotations() 返回此元素上直接存在的注釋。
Class<?>[] getDeclaredClasses() 返回一個 Class 對象數(shù)組,反映聲明為此 Class 對象表示的類的成員的所有類和接口。
ConstructorT getDeclaredConstructor(Class<?>... parameterTypes) 返回一個 Constructor 對象,該對象反映此 Class 對象表示的類或接口的指定構(gòu)造函數(shù)。
Constructor<?>[] getDeclaredConstructors() 返回一個 Constructor 對象數(shù)組,反映由該 Class 對象表示的類聲明的所有構(gòu)造函數(shù)。
Field getDeclaredField(String name) 返回一個反映此 Class 對象表示的類或接口的指定聲明字段的 Field 對象。
Field[] getDeclaredFields() 返回一個 Field 對象數(shù)組,反映由此 Class 對象表示的類或接口聲明的所有字段。
Method getDeclaredMethod(String name, Class<?>... parameterTypes) 返回一個 Method 對象,該對象反映此 Class 對象表示的類或接口的指定聲明方法。
Method[] getDeclaredMethods() 返回一個包含 Method 對象的數(shù)組,該對象反映了此 Class 對象表示的類或接口的所有聲明方法,包括公共、受保護、默認(rèn)(包)訪問和私有方法,但不包括繼承方法。
Class<?> getDeclaringClass() 如果此 Class 對象表示的類或接口是另一個類的成員,則返回表示在其中聲明它的類的 Class 對象。
Class<?> getEnclosingClass() 返回基礎(chǔ)類的直接封閉類。
Constructor<?> getEnclosingConstructor() 如果此 Class 對象表示構(gòu)造函數(shù)中的本地或匿名類,則返回表示基礎(chǔ)類的直接封閉構(gòu)造函數(shù)的 Constructor 對象。
Method getEnclosingMethod() 如果此 Class 對象表示方法中的本地或匿名類,則返回一個 Method 對象,該對象表示基礎(chǔ)類的直接封閉方法。
T[] getEnumConstants() 如果此 Class 對象不表示枚舉類型,則返回此枚舉類的元素或 null。
Field getField(String name) 返回一個反映此 Class 對象表示的類或接口的指定公共成員字段的 Field 對象。
Field[] getFields() 返回一個包含 Field 對象的數(shù)組,該數(shù)組反映了此 Class 對象表示的類或接口的所有可訪問公共字段。
Type[] getGenericInterfaces() 返回表示由該對象表示的類或接口直接實現(xiàn)的接口的類型。
Type getGenericSuperclass() 返回表示此 Class 所表示的實體(類、接口、原始類型或 void)的直接超類的 Type。
Class<?>[] getInterfaces() 確定此對象表示的類或接口實現(xiàn)的接口。
Method getMethod(String name, Class<?>... parameterTypes) 返回一個 Method 對象,該對象反映此 Class 對象表示的類或接口的指定公共成員方法。
Method[] getMethods() 返回一個包含 Method 對象的數(shù)組,該對象反映了由此 Class 對象表示的類或接口的所有公共方法,包括由類或接口聲明的那些以及從超類和超接口繼承的那些。
int getModifiers() 返回此類或接口的 Java 語言修飾符,以整數(shù)編碼。
String getName() 以字符串形式返回此 Class 對象表示的實體(類、接口、數(shù)組類、原始類型或 void)的名稱。
Package getPackage() 獲取此類的包。
ProtectionDomain getProtectionDomain() 返回此類的 ProtectionDomain。
URL getResource(String name) 查找具有給定名稱的資源。
InputStream getResourceAsStream(String name) 查找具有給定名稱的資源。
Object[] getSigners() 獲取此類的簽名者。
String getSimpleName() 返回源代碼中給出的基礎(chǔ)類的簡單名稱。
Class<? super T> getSuperclass() 返回表示此 Class 所表示的實體(類、接口、原始類型或 void)的超類的 Class。
String getTypeName() 返回此類型名稱的信息字符串。
TypeVariableClassT[] getTypeParameters() 按聲明順序返回一個 TypeVariable 對象數(shù)組,這些對象表示由此 GenericDeclaration 對象表示的泛型聲明所聲明的類型變量。
boolean isAnnotation() 如果此 Class 對象表示注釋類型,則返回 true。
boolean isAnnotationPresent(Class<? extends Annotation> annotationClass) 如果此元素上存在指定類型的注釋,則返回 true,否則返回 false。
boolean isAnonymousClass() 當(dāng)且僅當(dāng)基礎(chǔ)類是匿名類時才返回 true。
boolean isArray() 確定此 Class 對象是否表示數(shù)組類。
boolean isAssignableFrom(Class<?> cls) 確定此 Class 對象表示的類或接口是否與指定的 Class 參數(shù)表示的類或接口相同,或者是其超類或超接口。
boolean isEnum() 當(dāng)且僅當(dāng)此類在源代碼中聲明為枚舉時才返回 true。
boolean isInstance(Object obj) 確定指定的 Object 是否與該 Class 表示的對象賦值兼容。
boolean isInterface() 確定指定的 Class 對象是否表示接口類型。
boolean isLocalClass() 當(dāng)且僅當(dāng)基礎(chǔ)類是本地類時返回 true。
boolean isMemberClass() 當(dāng)且僅當(dāng)基礎(chǔ)類是成員類時才返回 true。
boolean isPrimitive() 確定指定的 Class 對象是否表示原始類型。
boolean isSynthetic() 如果此類是合成類,則返回 true; 否則返回 false。
T newInstance() 創(chuàng)建由此 Class 對象表示的類的新實例。
String toGenericString() 返回描述該類的字符串,包括有關(guān)修飾符和類型參數(shù)的信息。
String toString() 將對象轉(zhuǎn)換為字符串。
從接口 java.lang.reflect.AnnotatedElement 繼承的方法
getDeclaredAnnotationsByType
從類 java.lang.Object 繼承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait

方法詳情

toString

public String toString()

將對象轉(zhuǎn)換為字符串。 字符串表示是字符串“類”或“接口”,后跟一個空格,然后是由 getName 返回的格式的類的完全限定名稱。 如果此 Class 對象表示原始類型,則此方法返回原始類型的名稱。 如果此 Class 對象表示 void,則此方法返回“void”。

覆蓋:

類 Object 中的 toString

返回:

此類對象的字符串表示形式。

toGenericString

public String toGenericString()

返回描述該類的字符串,包括有關(guān)修飾符和類型參數(shù)的信息。 字符串被格式化為類型修飾符列表(如果有),然后是類型的種類(基本類型和類的空字符串,枚舉,接口或@interface,視情況而定),然后是類型的名稱,然后是 類型的類型參數(shù)的尖括號逗號分隔列表(如果有)。 空格用于將修飾符彼此分開,并將任何修飾符與類型分開。 修飾符按規(guī)范順序出現(xiàn)。 如果沒有類型參數(shù),則省略類型參數(shù)列表。

請注意,由于正在生成有關(guān)類型的運行時表示的信息,因此可能存在原始源代碼上不存在的修飾符或原始源代碼上的非法修飾符。

返回:

描述該類的字符串,包括有關(guān)修飾符和類型參數(shù)的信息

forName

public static Class<?> forName(String className) throws ClassNotFoundException

返回與具有給定字符串名稱的類或接口關(guān)聯(lián)的 Class 對象。 調(diào)用此方法等效于:

Class.forName(className, true, currentLoader)

其中 currentLoader 表示當(dāng)前類的定義類加載器。

例如,以下代碼片段返回名為 java.lang.Thread 的類的運行時類描述符:

類 t = Class.forName("java.lang.Thread")

調(diào)用 forName("X") 會導(dǎo)致初始化名為 X 的類。

參數(shù):

參數(shù)名稱 參數(shù)描述
className 所需類的完全限定名稱。

返回:

具有指定名稱的類的 Class 對象。

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 對象。給定類或接口的完全限定名稱(與 getName 返回的格式相同),此方法嘗試定位、加載和鏈接類或接口。指定的類加載器用于加載類或接口。如果參數(shù)加載器為空,則通過引導(dǎo)類加載器加載該類。僅當(dāng) initialize 參數(shù)為 true 且之前未初始化時,才會初始化該類。

如果 name 表示原始類型或 void,將嘗試在名稱為 name 的未命名包中查找用戶定義的類。因此,此方法不能用于獲取任何表示原始類型或 void 的 Class 對象。

如果 name 表示一個數(shù)組類,則數(shù)組類的組件類型被加載但不被初始化。

例如,在實例方法中,表達式:

Class.forName("Foo")

相當(dāng)于:

Class.forName("Foo", true, this.getClass().getClassLoader())

請注意,此方法會引發(fā)與 Java 語言規(guī)范第 12.2、12.3 和 12.4 節(jié)中指定的加載、鏈接或初始化相關(guān)的錯誤。請注意,此方法不檢查其調(diào)用者是否可以訪問所請求的類。

如果加載器為空,并且存在安全管理器,并且調(diào)用者的類加載器不為空,則此方法以 RuntimePermission("getClassLoader") 權(quán)限調(diào)用安全管理器的 checkPermission 方法,以確??梢栽L問引導(dǎo)類加載器.

參數(shù):

參數(shù)名稱 參數(shù)描述
name 所需類的完全限定名
initialize 如果為真,則該類將被初始化。 請參閱 Java 語言規(guī)范的第 12.4 節(jié)。
loader 必須從中加載類的類加載器

返回:

表示所需類的類對象

Throws:

Throw名稱 Throw描述
LinkageError 如果鏈接失敗
ExceptionInInitializerError 如果此方法引發(fā)的初始化失敗
ClassNotFoundException 如果指定的類加載器無法找到該類

newInstance

public T newInstance() throws IllegalAccessException, InstantiationException

創(chuàng)建由此 Class 對象表示的類的新實例。 該類被實例化為一個帶有空參數(shù)列表的新表達式。 如果尚未初始化該類,則將其初始化。

請注意,此方法傳播由 nullary 構(gòu)造函數(shù)引發(fā)的任何異常,包括已檢查的異常。 使用此方法可以有效地繞過編譯器執(zhí)行的編譯時異常檢查。 Constructor.newInstance 方法通過將構(gòu)造函數(shù)拋出的任何異常包裝在(已檢查)InvocationTargetException 中來避免此問題。

返回:

此對象表示的類的新分配實例。

Throws:

Throw名稱 Throw描述
IllegalAccessException 如果類或其空構(gòu)造函數(shù)不可訪問。
InstantiationException 如果此 Class 表示抽象類、接口、數(shù)組類、原始類型或 void; 或者如果該類沒有空構(gòu)造函數(shù); 或者如果實例化由于某種其他原因而失敗。
ExceptionInInitializerError 如果此方法引發(fā)的初始化失敗。
SecurityException 如果存在安全管理器 s,并且調(diào)用者的類加載器與當(dāng)前類的類加載器不同或其祖先,并且 SecurityManager#checkPackageAccess 的調(diào)用拒絕訪問此類的包。

isInstance

public boolean isInstance(Object obj)

確定指定的 Object 是否與該 Class 表示的對象賦值兼容。此方法是 Java 語言 instanceof 運算符的動態(tài)等效方法。如果指定的 Object 參數(shù)為非 null 并且可以強制轉(zhuǎn)換為此 Class 對象表示的引用類型而不引發(fā) ClassCastException,則該方法返回 true。否則返回 false。

具體來說,如果此 Class 對象表示已聲明的類,則如果指定的 Object 參數(shù)是表示的類(或其任何子類)的實例,則此方法返回 true;否則返回 false。如果此 Class 對象表示一個數(shù)組類,如果指定的 Object 參數(shù)可以通過恒等轉(zhuǎn)換或擴展引用轉(zhuǎn)換轉(zhuǎn)換為數(shù)組類的對象,則此方法返回 true;否則返回 false。如果此 Class 對象表示一個接口,則如果指定 Object 參數(shù)的類或任何超類實現(xiàn)此接口,則此方法返回 true;否則返回 false。如果此 Class 對象表示原始類型,則此方法返回 false。

參數(shù):

參數(shù)名稱 參數(shù)描述
obj 要檢查的對象

返回:

如果 obj 是此類的實例,則為 true

isAssignableFrom

public boolean isAssignableFrom(Class<?> cls)

確定此 Class 對象表示的類或接口是否與指定的 Class 參數(shù)表示的類或接口相同,或者是其超類或超接口。 如果是,則返回 true; 否則返回false。 如果此 Class 對象表示原始類型,則如果指定的 Class 參數(shù)正是此 Class 對象,則此方法返回 true; 否則返回false。

具體來說,該方法測試指定的 Class 參數(shù)表示的類型是否可以通過恒等轉(zhuǎn)換或擴展引用轉(zhuǎn)換轉(zhuǎn)換為該 Class 對象表示的類型。 有關(guān)詳細信息,請參閱 Java 語言規(guī)范,第 5.1.1 和 5.1.4 節(jié)。

參數(shù):

參數(shù)名稱 參數(shù)描述
cls 要檢查的類對象

返回:

布爾值,指示是否可以將 cls 類型的對象分配給此類的對象

Throws:

Throw名稱 Throw描述
NullPointerException 如果指定的 Class 參數(shù)為空。

isInterface

public boolean isInterface()

確定指定的 Class 對象是否表示接口類型。

返回:

如果此對象表示一個接口,則為 true; 否則為假。

isArray

public boolean isArray()

確定此 Class 對象是否表示數(shù)組類。

返回:

如果此對象表示一個數(shù)組類,則為 true; 否則為假。

isPrimitive

public boolean isPrimitive()

確定指定的 Class 對象是否表示原始類型。

有九個預(yù)定義的 Class 對象來表示八種原始類型和 void。 它們由 Java 虛擬機創(chuàng)建,并且與它們所代表的原始類型具有相同的名稱,即 boolean、byte、char、short、int、long、float 和 double。

這些對象只能通過以下公共靜態(tài)最終變量訪問,并且是此方法返回 true 的唯一 Class 對象。

返回:

當(dāng)且僅當(dāng)此類表示原始類型時才為真

isAnnotation

public boolean isAnnotation()

如果此 Class 對象表示注釋類型,則返回 true。 請注意,如果此方法返回 true,isInterface() 也將返回 true,因為所有注釋類型也是接口。

返回:

如果此類對象表示注釋類型,則為 true; 否則為假

isSynthetic

public boolean isSynthetic()

如果此類是合成類,則返回 true; 否則返回 false。

返回:

當(dāng)且僅當(dāng)此類是 Java 語言規(guī)范定義的合成類時才為真。

getName

public String getName()

以字符串形式返回此 Class 對象表示的實體(類、接口、數(shù)組類、原始類型或 void)的名稱。

如果該類對象表示非數(shù)組類型的引用類型,則返回該類的二進制名稱,如《Java? 語言規(guī)范》所指定。

如果此類對象表示原始類型或 void,則返回的名稱是與原始類型或 void 對應(yīng)的 Java 語言關(guān)鍵字相等的 String。

如果該類對象表示一類數(shù)組,則名稱的內(nèi)部形式由元素類型的名稱組成,前面有一個或多個“[”字符,表示數(shù)組嵌套的深度。 元素類型名稱的編碼如下:

類或接口名稱 classname 是上面指定的類的二進制名稱。

例子:

 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" 

返回:

此對象表示的類或接口的名稱。

getClassLoader

public ClassLoader getClassLoader()

返回類的類加載器。 一些實現(xiàn)可能使用 null 來表示引導(dǎo)類加載器。 如果此類由引導(dǎo)類加載器加載,則此方法將在此類實現(xiàn)中返回 null。

如果存在安全管理器,并且調(diào)用者的類加載器不為空,并且調(diào)用者的類加載器與請求其類加載器的類的類加載器不同或其祖先,則此方法調(diào)用安全管理器的 checkPermission 方法 具有 RuntimePermission("getClassLoader") 權(quán)限,以確??梢栽L問該類的類加載器。

如果此對象表示原始類型或 void,則返回 null。

返回:

加載此對象表示的類或接口的類加載器。

Throws:

Throw名稱 Throw描述
SecurityException 如果存在安全管理器并且其 checkPermission 方法拒絕訪問該類的類加載器。

getTypeParameters

public TypeVariableClassT[] getTypeParameters()

按聲明順序返回一個 TypeVariable 對象數(shù)組,這些對象表示由此 GenericDeclaration 對象表示的泛型聲明所聲明的類型變量。 如果基礎(chǔ)泛型聲明未聲明類型變量,則返回長度為 0 的數(shù)組。

指定者:

接口 GenericDeclaration 中的 getTypeParameters

返回:

表示此泛型聲明所聲明的類型變量的 TypeVariable 對象數(shù)組

Throws:

Throw名稱 Throw描述
GenericSignatureFormatError 如果此泛型聲明的泛型簽名不符合《Java? 虛擬機規(guī)范》中指定的格式

getSuperclass

public Class<? super T> getSuperclass()

返回表示此 Class 所表示的實體(類、接口、原始類型或 void)的超類的 Class。 如果此 Class 表示 Object 類、接口、原始類型或 void,則返回 null。 如果此對象表示數(shù)組類,則返回表示 Object 類的 Class 對象。

返回:

此對象表示的類的超類。

getGenericSuperclass

public Type getGenericSuperclass()

返回表示此 Class 所表示的實體(類、接口、原始類型或 void)的直接超類的 Type。

如果超類是參數(shù)化類型,則返回的 Type 對象必須準(zhǔn)確反映源代碼中使用的實際類型參數(shù)。 如果之前沒有創(chuàng)建過表示超類的參數(shù)化類型,則會創(chuàng)建它。 有關(guān)參數(shù)化類型的創(chuàng)建過程的語義,請參見 ParameterizedType 的聲明。 如果此 Class 表示 Object 類、接口、原始類型或 void,則返回 null。 如果此對象表示數(shù)組類,則返回表示 Object 類的 Class 對象。

返回:

此對象表示的類的超類

Throws:

Throw名稱 Throw描述
GenericSignatureFormatError 如果泛型類簽名不符合《Java? 虛擬機規(guī)范》中指定的格式
TypeNotPresentException 如果泛型超類引用了不存在的類型聲明
MalformedParameterizedTypeException 如果泛型超類引用了因任何原因無法實例化的參數(shù)化類型

getPackage

public Package getPackage()

獲取此類的包。 該類的類加載器用于查找包。 如果該類是由引導(dǎo)類加載器加載的,則搜索從 CLASSPATH 加載的包集以找到該類的包。 如果此類的類加載器沒有創(chuàng)建包對象,則返回 Null。

僅當(dāng)信息在伴隨類的清單中定義并且類加載器使用清單中的屬性創(chuàng)建包實例時,包才具有版本和規(guī)范的屬性。

返回:

類的包,如果歸檔或代碼庫中沒有可用的包信息,則返回 null。

getInterfaces

public Class<?>[] getInterfaces()

確定此對象表示的類或接口實現(xiàn)的接口。

如果此對象表示一個類,則返回值是一個數(shù)組,其中包含表示該類實現(xiàn)的所有接口的對象。數(shù)組中接口對象的順序?qū)?yīng)于該對象所代表的類的聲明的implements子句中接口名稱的順序。例如,給定聲明:

Shimmer 類實現(xiàn) FloorWax、DessertTopping { ... }

假設(shè) s 的值是 Shimmer 的一個實例;表達式的值:

s.getClass().getInterfaces()[0]

是表示接口 FloorWax 的 Class 對象;和價值:

s.getClass().getInterfaces()[1]

是表示接口 DessertTopping 的 Class 對象。

如果此對象表示一個接口,則該數(shù)組包含表示該接口擴展的所有接口的對象。數(shù)組中接口對象的順序?qū)?yīng)于該對象表示的接口聲明的extends子句中接口名稱的順序。

如果此對象表示一個沒有實現(xiàn)接口的類或接口,則該方法返回一個長度為 0 的數(shù)組。

如果此對象表示原始類型或 void,則該方法返回長度為 0 的數(shù)組。

如果此 Class 對象表示數(shù)組類型,則接口 Cloneable 和 java.io.Serializable 將按該順序返回。

返回:

由此類實現(xiàn)的接口數(shù)組。

getGenericInterfaces

public Type[] getGenericInterfaces()

返回表示由該對象表示的類或接口直接實現(xiàn)的接口的類型。

如果超接口是參數(shù)化類型,則為其返回的 Type 對象必須準(zhǔn)確反映源代碼中使用的實際類型參數(shù)。如果之前沒有創(chuàng)建過代表每個超接口的參數(shù)化類型,則創(chuàng)建它。有關(guān)參數(shù)化類型的創(chuàng)建過程的語義,請參見 ParameterizedType 的聲明。

如果此對象表示一個類,則返回值是一個數(shù)組,其中包含表示該類實現(xiàn)的所有接口的對象。數(shù)組中接口對象的順序?qū)?yīng)于該對象所代表的類的聲明的implements子句中接口名稱的順序。在數(shù)組類的情況下,接口 Cloneable 和 Serializable 按該順序返回。

如果此對象表示一個接口,則該數(shù)組包含表示該接口直接擴展的所有接口的對象。數(shù)組中接口對象的順序?qū)?yīng)于該對象表示的接口聲明的extends子句中接口名稱的順序。

如果此對象表示一個沒有實現(xiàn)接口的類或接口,則該方法返回一個長度為 0 的數(shù)組。

如果此對象表示原始類型或 void,則該方法返回長度為 0 的數(shù)組。

返回:

由此類實現(xiàn)的接口數(shù)組

Throws:

Throw名稱 Throw描述
GenericSignatureFormatError 如果泛型類簽名不符合《Java? 虛擬機規(guī)范》中指定的格式
TypeNotPresentException 如果任何通用超接口引用了不存在的類型聲明
MalformedParameterizedTypeException 如果任何通用超接口引用了因任何原因無法實例化的參數(shù)化類型

getComponentType

public Class<?> getComponentType()

返回表示數(shù)組組件類型的 Class。 如果此類不表示數(shù)組類,則此方法返回 null。

返回:

如果此類是數(shù)組,則表示此類的組件類型的 Class

getModifiers

public int getModifiers()

返回此類或接口的 Java 語言修飾符,以整數(shù)編碼。 修飾符由 Java 虛擬機的 public、protected、private、final、static、abstract 和 interface 常量組成; 它們應(yīng)該使用類修飾符的方法進行解碼。

如果底層類是一個數(shù)組類,那么它的 public、private 和 protected 修飾符與其組件類型的修飾符相同。 如果此類表示原始類型或 void,則其 public 修飾符始終為 true,其 protected 和 private 修飾符始終為 false。 如果此對象表示數(shù)組類、原始類型或 void,則其 final 修飾符始終為 true,其接口修飾符始終為 false。 本規(guī)范未確定其其他修飾符的值。

修飾符編碼在 Java 虛擬機規(guī)范的表 4.1 中定義。

返回:

表示此類修飾符的 int

getSigners

public Object[] getSigners()

獲取此類的簽名者。

返回:

此類的簽名者,如果沒有簽名者,則返回 null。 特別是,如果此對象表示原始類型或 void,則此方法返回 null。

getEnclosingMethod

public Method getEnclosingMethod() throws SecurityException

如果此 Class 對象表示方法中的本地或匿名類,則返回一個 Method 對象,該對象表示基礎(chǔ)類的直接封閉方法。 否則返回 null。 特別是,如果基礎(chǔ)類是直接由類型聲明、實例初始化程序或靜態(tài)初始化程序包圍的本地或匿名類,則此方法返回 null。

返回:

底層類的直接封閉方法,如果該類是本地或匿名類; 否則為空。

Throws:

Throw名稱 Throw描述
SecurityException 如果存在安全管理器 s 并且滿足以下任一條件:調(diào)用者的類加載器與封閉類的類加載器不同并且使用 RuntimePermission("accessDeclaredMembers") 調(diào)用 SecurityManager#checkPermission 方法拒絕訪問 對于封閉類中的方法調(diào)用者的類加載器與封閉類的類加載器不同或其祖先,并且調(diào)用 SecurityManager#checkPackageAccess 拒絕訪問封閉類的包

getEnclosingConstructor

public Constructor<?> getEnclosingConstructor() throws SecurityException

如果此 Class 對象表示構(gòu)造函數(shù)中的本地或匿名類,則返回表示基礎(chǔ)類的直接封閉構(gòu)造函數(shù)的 Constructor 對象。 否則返回 null。 特別是,如果基礎(chǔ)類是直接由類型聲明、實例初始化程序或靜態(tài)初始化程序包圍的本地或匿名類,則此方法返回 null。

返回:

底層類的直接封閉構(gòu)造函數(shù),如果該類是本地或匿名類; 否則為空。

Throws:

Throw名稱 Throw描述
SecurityException 如果存在安全管理器 s 并且滿足以下任一條件:調(diào)用者的類加載器與封閉類的類加載器不同并且使用 RuntimePermission("accessDeclaredMembers") 調(diào)用 SecurityManager#checkPermission 方法拒絕訪問 對于封閉類中的構(gòu)造函數(shù),調(diào)用者的類加載器與封閉類的類加載器不同或不是其祖先,并且 SecurityManager#checkPackageAccess 的調(diào)用拒絕訪問封閉類的包

getDeclaringClass

public Class<?> getDeclaringClass() throws SecurityException

如果此 Class 對象表示的類或接口是另一個類的成員,則返回表示在其中聲明它的類的 Class 對象。 如果此類或接口不是任何其他類的成員,則此方法返回 null。 如果此 Class 對象表示數(shù)組類、原始類型或 void,則此方法返回 null。

返回:

這個類的聲明類

Throws:

Throw名稱 Throw描述
SecurityException 如果存在安全管理器 s,并且調(diào)用者的類加載器與聲明類的類加載器不同或其祖先,并且 SecurityManager#checkPackageAccess 的調(diào)用拒絕訪問聲明類的包

getEnclosingClass

public Class<?> getEnclosingClass() throws SecurityException

返回基礎(chǔ)類的直接封閉類。 如果底層類是頂級類,則此方法返回 null。

返回:

基礎(chǔ)類的直接封閉類

Throws:

Throw名稱 Throw描述
SecurityException 如果存在安全管理器 s,并且調(diào)用者的類加載器與封閉類的類加載器不同或其祖先,并且 SecurityManager#checkPackageAccess 的調(diào)用拒絕訪問封閉類的包

getSimpleName

public String getSimpleName()

返回源代碼中給出的基礎(chǔ)類的簡單名稱。 如果基礎(chǔ)類是匿名的,則返回一個空字符串。

數(shù)組的簡單名稱是附加了“[]”的組件類型的簡單名稱。 特別是組件類型為匿名的數(shù)組的簡單名稱是“[]”。

返回:

底層類的簡單名稱

getTypeName

public String getTypeName()

返回此類型名稱的信息字符串。

指定者:

接口類型中的getTypeName

返回:

此類型名稱的信息字符串

getCanonicalName

public String getCanonicalName()

返回 Java 語言規(guī)范定義的基礎(chǔ)類的規(guī)范名稱。 如果基礎(chǔ)類沒有規(guī)范名稱(即,如果它是本地或匿名類或組件類型沒有規(guī)范名稱的數(shù)組),則返回 null。

返回:

如果存在,則為基礎(chǔ)類的規(guī)范名稱,否則為 null。

isAnonymousClass

public boolean isAnonymousClass()

當(dāng)且僅當(dāng)基礎(chǔ)類是匿名類時才返回 true。

返回:

當(dāng)且僅當(dāng)此類是匿名類時才為真。

isLocalClass

public boolean isLocalClass()

當(dāng)且僅當(dāng)基礎(chǔ)類是本地類時返回 true。

返回:

當(dāng)且僅當(dāng)此類是本地類時才為真。

isMemberClass

public boolean isMemberClass()

當(dāng)且僅當(dāng)基礎(chǔ)類是成員類時才返回 true。

返回:

當(dāng)且僅當(dāng)此類是成員類時才為真。

getClasses

public Class<?>[] getClasses()

返回一個數(shù)組,其中包含表示所有公共類和接口的 Class 對象,這些公共類和接口是此 Class 對象表示的類的成員。 這包括從超類繼承的公共類和接口成員以及類聲明的公共類和接口成員。 如果此 Class 對象沒有公共成員類或接口,則此方法返回長度為 0 的數(shù)組。 如果此 Class 對象表示原始類型、數(shù)組類或 void,則此方法還返回長度為 0 的數(shù)組。

返回:

表示此類的公共成員的 Class 對象數(shù)組

Throws:

Throw名稱 Throw描述
SecurityException 如果存在安全管理器 s,并且調(diào)用者的類加載器與當(dāng)前類的類加載器不同或其祖先,并且 SecurityManager#checkPackageAccess 的調(diào)用拒絕訪問此類的包。

getFields

public Field[] getFields() throws SecurityException

返回一個包含 Field 對象的數(shù)組,該數(shù)組反映了此 Class 對象表示的類或接口的所有可訪問公共字段。

如果此 Class 對象表示沒有可訪問的公共字段的類或接口,則此方法返回長度為 0 的數(shù)組。

如果此 Class 對象表示一個類,則此方法返回該類及其所有超類的公共字段。

如果此 Class 對象表示一個接口,則此方法返回該接口及其所有超接口的字段。

如果此 Class 對象表示數(shù)組類型、原始類型或 void,則此方法返回長度為 0 的數(shù)組。

返回數(shù)組中的元素沒有排序,也沒有任何特定的順序。

返回:

表示公共字段的 Field 對象數(shù)組

Throws:

Throw名稱 Throw描述
SecurityException 如果存在安全管理器 s,并且調(diào)用者的類加載器與當(dāng)前類的類加載器不同或其祖先,并且 SecurityManager#checkPackageAccess 的調(diào)用拒絕訪問此類的包。

getMethods

public Method[] getMethods() throws SecurityException

返回一個包含 Method 對象的數(shù)組,該對象反映了由此 Class 對象表示的類或接口的所有公共方法,包括由類或接口聲明的那些以及從超類和超接口繼承的那些。

如果此 Class 對象表示具有多個具有相同名稱和參數(shù)類型但返回類型不同的公共方法的類型,則返回的數(shù)組對于每個此類方法都有一個 Method 對象。

如果此 Class 對象表示具有類初始化方法 <clinit> 的類型,則返回的數(shù)組沒有對應(yīng)的 Method 對象。

如果此 Class 對象表示一個數(shù)組類型,則返回的數(shù)組具有一個 Method 對象,用于該數(shù)組類型從 Object 繼承的每個公共方法。它不包含用于 clone() 的 Method 對象。

如果此 Class 對象表示一個接口,則返回的數(shù)組不包含任何來自 Object 的隱式聲明的方法。因此,如果在此接口或其任何超接口中沒有顯式聲明任何方法,則返回的數(shù)組的長度為 0。(請注意,表示類的 Class 對象始終具有從 Object 繼承的公共方法。)

如果此 Class 對象表示原始類型或 void,則返回的數(shù)組的長度為 0。

在此 Class 對象表示的類或接口的超接口中聲明的靜態(tài)方法不被視為類或接口的成員。

返回數(shù)組中的元素沒有排序,也沒有任何特定的順序。

返回:

表示此類的公共方法的 Method 對象數(shù)組

Throws:

Throw名稱 Throw描述
SecurityException 如果存在安全管理器 s,并且調(diào)用者的類加載器與當(dāng)前類的類加載器不同或其祖先,并且 SecurityManager#checkPackageAccess 的調(diào)用拒絕訪問此類的包。

getConstructors

public Constructor<?>[] getConstructors() throws SecurityException

返回一個包含 Constructor 對象的數(shù)組,該對象反映了此 Class 對象表示的類的所有公共構(gòu)造函數(shù)。 如果類沒有公共構(gòu)造函數(shù),或者類是數(shù)組類,或者類反映原始類型或 void,則返回長度為 0 的數(shù)組。 請注意,雖然此方法返回一個 Constructor<T> 對象數(shù)組(即此類的構(gòu)造函數(shù)數(shù)組),但此方法的返回類型可能是 Constructor<?>[] 而不是 Constructor<T>[] 預(yù)期的。 這種信息量較少的返回類型是必要的,因為從該方法返回后,可以修改數(shù)組以保存不同類的 Constructor 對象,這將違反 Constructor<T>[] 的類型保證。

返回:

表示此類的公共構(gòu)造函數(shù)的 Constructor 對象數(shù)組

Throws:

Throw名稱 Throw描述
SecurityException 如果存在安全管理器 s,并且調(diào)用者的類加載器與當(dāng)前類的類加載器不同或其祖先,并且 SecurityManager#checkPackageAccess 的調(diào)用拒絕訪問此類的包。

getField

public Field getField(String name) throws NoSuchFieldException, SecurityException

返回一個反映此 Class 對象表示的類或接口的指定公共成員字段的 Field 對象。 name 參數(shù)是一個字符串,指定所需字段的簡單名稱。

要反射的場由下面的算法確定。 令 C 為該對象所代表的類或接口:

  1. 如果 C 聲明了一個指定名稱的公共字段,那就是要反映的字段。
  2. 如果在上面的步驟 1 中沒有找到任何字段,則該算法遞歸地應(yīng)用于 C 的每個直接超接口。直接超接口按照它們被聲明的順序進行搜索。
  3. 如果在上面的步驟 1 和 2 中沒有找到字段,并且 C 具有超類 S,則在 S 上遞歸調(diào)用該算法。如果 C 沒有超類,則拋出 NoSuchFieldException。

如果這個 Class 對象代表一個數(shù)組類型,那么這個方法沒有找到數(shù)組類型的長度字段。

參數(shù):

參數(shù)名稱 參數(shù)描述
name 字段名稱

返回:

由名稱指定的此類的 Field 對象

Throws:

Throw名稱 Throw描述
NoSuchFieldException 如果未找到具有指定名稱的字段。
NullPointerException 如果名稱為空
SecurityException 如果存在安全管理器 s,并且調(diào)用者的類加載器與當(dāng)前類的類加載器不同或其祖先,并且 SecurityManager#checkPackageAccess 的調(diào)用拒絕訪問此類的包。

getMethod

public Method getMethod(String name, Class<?>... parameterTypes) throws NoSuchMethodException, SecurityException

返回一個 Method 對象,該對象反映此 Class 對象表示的類或接口的指定公共成員方法。 name 參數(shù)是一個字符串,指定所需方法的簡單名稱。 parameterTypes 參數(shù)是一個 Class 對象數(shù)組,它們按照聲明的順序標(biāo)識方法的形式參數(shù)類型。如果 parameterTypes 為 null,則將其視為空數(shù)組。

如果名稱是“<init>”或“<clinit>”,則會引發(fā) NoSuchMethodException。否則,要反映的方法由后面的算法決定。令 C 為該對象所代表的類或接口:

  1. C 搜索匹配方法,定義如下。如果找到匹配的方法,則將其反映。
  2. 如果步驟 1 沒有找到匹配方法,則:
    1. 如果 C 是 Object 以外的類,則在 C 的超類上遞歸調(diào)用該算法。
    2. 如果 C 是類 Object,或者如果 C 是接口,則在 C 的超接口(如果有)中搜索匹配的方法。如果找到任何此類方法,則將其反映。

在類或接口 C 中找到匹配的方法:如果 C 聲明了一個具有指定名稱和完全相同的形參類型的公共方法,那就是反映的方法。如果在 C 中發(fā)現(xiàn)了多個這樣的方法,并且其中一個方法的返回類型比其他任何方法都更具體,則反映該方法;否則任意選擇其中一種方法。

請注意,一個類中可能有多個匹配方法,因為雖然 Java 語言禁止一個類聲明具有相同簽名但返回類型不同的多個方法,但 Java 虛擬機不會。虛擬機中這種增加的靈活性可用于實現(xiàn)各種語言功能。例如,協(xié)變返回可以用橋接方法來實現(xiàn);橋接方法和被覆蓋的方法將具有相同的簽名,但返回類型不同。

如果這個 Class 對象代表一個數(shù)組類型,那么這個方法找不到 clone() 方法。

在此 Class 對象表示的類或接口的超接口中聲明的靜態(tài)方法不被視為類或接口的成員。

參數(shù):

參數(shù)名稱 參數(shù)描述
name 方法的名稱
parameterTypes 參數(shù)列表

返回:

與指定名稱和 parameterTypes 匹配的 Method 對象

Throws:

Throw名稱 Throw描述
NoSuchMethodException 如果沒有找到匹配的方法或者名稱是“<init>”或“<clinit>”。
NullPointerException 如果名稱為空
SecurityException 如果存在安全管理器 s,并且調(diào)用者的類加載器與當(dāng)前類的類加載器不同或其祖先,并且 SecurityManager#checkPackageAccess 的調(diào)用拒絕訪問此類的包。

getConstructor

public ConstructorT getConstructor(Class<?>... parameterTypes) throws NoSuchMethodException, SecurityException

返回一個 Constructor 對象,該對象反映此 Class 對象表示的類的指定公共構(gòu)造函數(shù)。 parameterTypes 參數(shù)是一個 Class 對象數(shù)組,它們按照聲明的順序標(biāo)識構(gòu)造函數(shù)的形式參數(shù)類型。 如果此 Class 對象表示在非靜態(tài)上下文中聲明的內(nèi)部類,則形式參數(shù)類型包括顯式封閉實例作為第一個參數(shù)。

要反映的構(gòu)造函數(shù)是此 Class 對象表示的類的公共構(gòu)造函數(shù),其形參類型與 parameterTypes 指定的類型匹配。

參數(shù):

參數(shù)名稱 參數(shù)描述
parameterTypes 參數(shù)數(shù)組

返回:

與指定 parameterTypes 匹配的公共構(gòu)造函數(shù)的 Constructor 對象

Throws:

Throw名稱 Throw描述
NoSuchMethodException 如果沒有找到匹配的方法。
SecurityException 如果存在安全管理器 s,并且調(diào)用者的類加載器與當(dāng)前類的類加載器不同或其祖先,并且 SecurityManager#checkPackageAccess 的調(diào)用拒絕訪問此類的包。

getDeclaredClasses

public Class<?>[] getDeclaredClasses() throws SecurityException

返回一個 Class 對象數(shù)組,反映聲明為此 Class 對象表示的類的成員的所有類和接口。 這包括類聲明的公共、受保護、默認(rèn)(包)訪問以及私有類和接口,但不包括繼承的類和接口。 如果類沒有將類或接口聲明為成員,或者如果此 Class 對象表示原始類型、數(shù)組類或 void,則此方法返回長度為 0 的數(shù)組。

返回:

表示該類的所有聲明成員的 Class 對象數(shù)組

拋出:

Throw名稱 Throw描述
SecurityException 如果存在安全管理器 s 并且滿足以下任一條件:調(diào)用者的類加載器與此類的類加載器不同,并且使用 RuntimePermission("accessDeclaredMembers") 調(diào)用 SecurityManager#checkPermission 方法拒絕訪問 此類中聲明的類調(diào)用者的類加載器與當(dāng)前類的類加載器不同或其祖先,并且 SecurityManager#checkPackageAccess 的調(diào)用拒絕訪問此類的包

getDeclaredFields

public Field[] getDeclaredFields() throws SecurityException

返回一個 Field 對象數(shù)組,反映由此 Class 對象表示的類或接口聲明的所有字段。 這包括公共、受保護、默認(rèn)(包)訪問和私有字段,但不包括繼承的字段。

如果此 Class 對象表示沒有聲明字段的類或接口,則此方法返回長度為 0 的數(shù)組。

如果此 Class 對象表示數(shù)組類型、原始類型或 void,則此方法返回長度為 0 的數(shù)組。

返回數(shù)組中的元素沒有排序,也沒有任何特定的順序。

返回:

表示該類的所有聲明字段的 Field 對象數(shù)組

Throws:

Throw名稱 Throw描述
SecurityException 如果存在安全管理器 s 并且滿足以下任一條件:調(diào)用者的類加載器與此類的類加載器不同,并且使用 RuntimePermission("accessDeclaredMembers") 調(diào)用 SecurityManager#checkPermission 方法拒絕訪問 此類中聲明的字段調(diào)用者的類加載器與當(dāng)前類的類加載器不同或其祖先,并且調(diào)用 SecurityManager#checkPackageAccess 拒絕訪問此類的包

getDeclaredMethods

public Method[] getDeclaredMethods() throws SecurityException

返回一個包含 Method 對象的數(shù)組,該對象反映了此 Class 對象表示的類或接口的所有聲明方法,包括公共、受保護、默認(rèn)(包)訪問和私有方法,但不包括繼承方法。

如果此 Class 對象表示具有多個已聲明的具有相同名稱和參數(shù)類型但返回類型不同的方法的類型,則返回的數(shù)組對于每個此類方法都有一個 Method 對象。

如果此 Class 對象表示具有類初始化方法 <clinit> 的類型,則返回的數(shù)組沒有對應(yīng)的 Method 對象。

如果此 Class 對象表示沒有聲明方法的類或接口,則返回的數(shù)組的長度為 0。

如果此 Class 對象表示數(shù)組類型、原始類型或 void,則返回的數(shù)組的長度為 0。

返回數(shù)組中的元素沒有排序,也沒有任何特定的順序。

返回:

Method 對象的數(shù)組,表示該類的所有聲明的方法

Throws:

Throw名稱 Throw描述
SecurityException 如果存在安全管理器 s 并且滿足以下任一條件:調(diào)用者的類加載器與此類的類加載器不同,并且使用 RuntimePermission("accessDeclaredMembers") 調(diào)用 SecurityManager#checkPermission 方法拒絕訪問 此類中聲明的方法調(diào)用者的類加載器與當(dāng)前類的類加載器不同或其祖先,并且調(diào)用 SecurityManager#checkPackageAccess 拒絕訪問此類的包

getDeclaredConstructors

public Constructor<?>[] getDeclaredConstructors() throws SecurityException

返回一個 Constructor 對象數(shù)組,反映由該 Class 對象表示的類聲明的所有構(gòu)造函數(shù)。 這些是公共的、受保護的、默認(rèn)(包)訪問和私有構(gòu)造函數(shù)。 返回的數(shù)組中的元素沒有排序,也沒有任何特定的順序。 如果該類具有默認(rèn)構(gòu)造函數(shù),則它包含在返回的數(shù)組中。 如果此 Class 對象表示接口、原始類型、數(shù)組類或 void,則此方法返回長度為 0 的數(shù)組。

請參閱 Java 語言規(guī)范,第 8.2 節(jié)。

返回:

表示該類的所有已聲明構(gòu)造函數(shù)的 Constructor 對象數(shù)組

Throws:

Throw名稱 Throw描述
SecurityException 如果存在安全管理器 s 并且滿足以下任一條件:調(diào)用者的類加載器與此類的類加載器不同,并且使用 RuntimePermission("accessDeclaredMembers") 調(diào)用 SecurityManager#checkPermission 方法拒絕訪問 此類中聲明的構(gòu)造函數(shù)調(diào)用者的類加載器與當(dāng)前類的類加載器不同或其祖先,并且調(diào)用 SecurityManager#checkPackageAccess 拒絕訪問此類的包

getDeclaredField

public Field getDeclaredField(String name) throws NoSuchFieldException, SecurityException

返回一個反映此 Class 對象表示的類或接口的指定聲明字段的 Field 對象。 name 參數(shù)是一個字符串,它指定所需字段的簡單名稱。

如果這個 Class 對象代表一個數(shù)組類型,那么這個方法沒有找到數(shù)組類型的長度字段。

參數(shù):

參數(shù)名稱 參數(shù)描述
name 字段名稱

返回:

此類中指定字段的 Field 對象

Throws:

Throw名稱 Throw描述
NoSuchFieldException 如果未找到具有指定名稱的字段。
NullPointerException 如果名稱為空
SecurityException 如果存在安全管理器 s 并且滿足以下任一條件:調(diào)用者的類加載器與此類的類加載器不同,并且使用 RuntimePermission("accessDeclaredMembers") 調(diào)用 SecurityManager#checkPermission 方法拒絕訪問 聲明的字段調(diào)用者的類加載器與當(dāng)前類的類加載器不同或其祖先,并且調(diào)用 SecurityManager#checkPackageAccess 拒絕訪問此類的包

getDeclaredMethod

public Method getDeclaredMethod(String name, Class<?>... parameterTypes) throws NoSuchMethodException, SecurityException

返回一個 Method 對象,該對象反映此 Class 對象表示的類或接口的指定聲明方法。 name 參數(shù)是一個字符串,它指定所需方法的簡單名稱,parameterTypes 參數(shù)是一個 Class 對象數(shù)組,這些對象按照聲明的順序標(biāo)識方法的形式參數(shù)類型。 如果在一個類中聲明了多個具有相同參數(shù)類型的方法,并且其中一個方法的返回類型比其他任何方法都更具體,則返回該方法; 否則任意選擇其中一種方法。 如果名稱是“<init>”或“<clinit>”,則會引發(fā) NoSuchMethodException。

如果這個 Class 對象代表一個數(shù)組類型,那么這個方法找不到 clone() 方法。

參數(shù):

參數(shù)名稱 參數(shù)描述
name 方法的名稱
parameterTypes 參數(shù)數(shù)組

返回:

與指定名稱和參數(shù)匹配的此類方法的 Method 對象

Throws:

Throw名稱 Throw描述
NoSuchMethodException 如果沒有找到匹配的方法。
NullPointerException 如果名稱為空
SecurityException 如果存在安全管理器 s 并且滿足以下任一條件:調(diào)用者的類加載器與此類的類加載器不同,并且使用 RuntimePermission("accessDeclaredMembers") 調(diào)用 SecurityManager#checkPermission 方法拒絕訪問 聲明的方法調(diào)用者的類加載器與當(dāng)前類的類加載器不同或其祖先,并且調(diào)用 SecurityManager#checkPackageAccess 拒絕訪問該類的包

getDeclaredConstructor

public ConstructorT getDeclaredConstructor(Class<?>... parameterTypes) throws NoSuchMethodException, SecurityException

返回一個 Constructor 對象,該對象反映此 Class 對象表示的類或接口的指定構(gòu)造函數(shù)。 parameterTypes 參數(shù)是一個 Class 對象數(shù)組,它們按照聲明的順序標(biāo)識構(gòu)造函數(shù)的形式參數(shù)類型。 如果此 Class 對象表示在非靜態(tài)上下文中聲明的內(nèi)部類,則形式參數(shù)類型包括顯式封閉實例作為第一個參數(shù)。

參數(shù):

參數(shù)名稱 參數(shù)描述
parameterTypes 參數(shù)數(shù)組

返回:

具有指定參數(shù)列表的構(gòu)造函數(shù)的 Constructor 對象

Throws:

Throw名稱 Throw描述
NoSuchMethodException 如果沒有找到匹配的方法。
SecurityException 如果存在安全管理器 s 并且滿足以下任一條件:調(diào)用者的類加載器與此類的類加載器不同,并且使用 RuntimePermission("accessDeclaredMembers") 調(diào)用 SecurityManager#checkPermission 方法拒絕訪問 聲明的構(gòu)造函數(shù)調(diào)用者的類加載器與當(dāng)前類的類加載器不同或其祖先,并且調(diào)用 SecurityManager#checkPackageAccess 拒絕訪問此類的包

getResourceAsStream

public InputStream getResourceAsStream(String name)

查找具有給定名稱的資源。 搜索與給定類關(guān)聯(lián)的資源的規(guī)則由該類的定義類加載器實現(xiàn)。 這個方法委托給這個對象的類加載器。 如果此對象由引導(dǎo)類加載器加載,則該方法委托給 ClassLoader#getSystemResourceAsStream。

在委托之前,使用以下算法從給定的資源名稱構(gòu)造一個絕對資源名稱:

  • 如果名稱以“/”開頭(“\u002f”),則資源的絕對名稱是名稱中“/”后面的部分。

  • 否則,絕對名稱的格式如下:

modified_package_name/name

其中 modified_package_name 是此對象的包名稱,其中 '/' 替換為 '.' ('\u002e')。

參數(shù):

參數(shù)名稱 參數(shù)描述
name 所需資源的名稱

返回:

一個 InputStream 對象,如果沒有找到同名的資源,則返回 null

Throws:

Throw名稱 Throw描述
NullPointerException 如果名稱為空

Since:

JDK1.1

getResource

public URL getResource(String name)

查找具有給定名稱的資源。 搜索與給定類關(guān)聯(lián)的資源的規(guī)則由該類的定義類加載器實現(xiàn)。 這個方法委托給這個對象的類加載器。 如果此對象由引導(dǎo)類加載器加載,則該方法委托給 ClassLoader#getSystemResource。

在委托之前,使用以下算法從給定的資源名稱構(gòu)造一個絕對資源名稱:

  • 如果名稱以“/”開頭(“\u002f”),則資源的絕對名稱是名稱中“/”后面的部分。

  • 否則,絕對名稱的格式如下:

modified_package_name/name

其中 modified_package_name 是此對象的包名稱,其中 '/' 替換為 '.' ('\u002e')。

參數(shù):

參數(shù)名稱 參數(shù)描述
name 所需資源的名稱

返回:

如果沒有找到具有此名稱的資源,則為 URL 對象或 null

getProtectionDomain

public ProtectionDomain getProtectionDomain()

返回此類的 ProtectionDomain。 如果安裝了安全管理器,此方法首先調(diào)用安全管理器的 checkPermission 方法,并帶有 RuntimePermission("getProtectionDomain") 權(quán)限,以確??梢垣@取 ProtectionDomain。

返回:

此類的 ProtectionDomain

Throws:

Throw名稱 Throw描述
SecurityException 如果存在安全管理器并且其 checkPermission 方法不允許獲取 ProtectionDomain。

desiredAssertionStatus

public boolean desiredAssertionStatus()

如果要在調(diào)用此方法時對其進行初始化,則返回將分配給此類的斷言狀態(tài)。如果這個類已經(jīng)設(shè)置了它的斷言狀態(tài),將返回最近的設(shè)置;否則,如果任何包默認(rèn)斷言狀態(tài)與此類有關(guān),則返回最具體的相關(guān)包默認(rèn)斷言狀態(tài)的最新設(shè)置;否則,如果該類不是系統(tǒng)類(即,它具有類加載器),則返回其類加載器的默認(rèn)斷言狀態(tài);否則,返回系統(tǒng)類默認(rèn)斷言狀態(tài)。

很少有程序員需要這種方法;它是為了 JRE 本身的利益而提供的。 (它允許類在初始化時確定是否應(yīng)啟用斷言。)請注意,此方法不能保證返回與指定類相關(guān)聯(lián)的實際斷言狀態(tài)(或?qū)⒁;驅(qū)⒈唬┏跏蓟?/p>

返回:

指定類的所需斷言狀態(tài)。

isEnum

public boolean isEnum()

當(dāng)且僅當(dāng)此類在源代碼中聲明為枚舉時才返回 true。

返回:

當(dāng)且僅當(dāng)該類在源代碼中聲明為枚舉時才為真

getEnumConstants

public T[] getEnumConstants()

如果此 Class 對象不表示枚舉類型,則返回此枚舉類的元素或 null。

返回:

一個數(shù)組,其中包含組成此 Class 對象表示的枚舉類的值,按它們聲明的順序,如果此 Class 對象不表示枚舉類型,則為 null

cast

public T cast(Object obj)

將對象強制轉(zhuǎn)換為此 Class 對象表示的類或接口。

參數(shù):

參數(shù)名稱 參數(shù)描述
obj 要投射的對象

返回:

轉(zhuǎn)換后的對象,如果 obj 為 null,則為 null

Throws:

Throw名稱 Throw描述
ClassCastException 如果對象不為 null 且不可分配給類型 T。

asSubclass

public <U> Class<? extends U> asSubclass(Class<U> clazz)

轉(zhuǎn)換此 Class 對象以表示由指定類對象表示的類的子類。 檢查強制轉(zhuǎn)換是否有效,如果無效則拋出 ClassCastException。 如果此方法成功,它總是返回對此類對象的引用。

當(dāng)客戶端需要“縮小” Class 對象的類型以將其傳遞給限制它愿意接受的 Class 對象的 API 時,此方法很有用。 強制轉(zhuǎn)換會生成編譯時警告,因為無法在運行時檢查強制轉(zhuǎn)換的正確性(因為泛型類型是通過擦除實現(xiàn)的)。

類型參數(shù):

類型參數(shù)名稱 類型參數(shù)描述
U 將此類對象強制轉(zhuǎn)換為的類型

參數(shù):

參數(shù)名稱 參數(shù)描述
clazz 要將此類對象轉(zhuǎn)換為的類型的類

返回:

此 Class 對象,轉(zhuǎn)換為表示指定類對象的子類。

Throws:

Throw名稱 Throw描述
ClassCastException 如果這個 Class 對象不代表指定類的子類(這里的“子類”包括類本身)。

getAnnotation

public <A extends Annotation> A getAnnotation(Class<A> annotationClass)

從接口復(fù)制的描述:AnnotatedElement

如果存在這樣的注釋,則返回此元素的指定類型的注釋,否則返回 null。

指定者:

接口 AnnotatedElement 中的 getAnnotation

類型參數(shù):

類型參數(shù)名稱 類型參數(shù)描述
A 要查詢并返回的注釋類型(如果存在)

參數(shù):

參數(shù)名稱 參數(shù)描述
annotationClass 注解類型對應(yīng)的Class對象

返回:

此元素的指定注釋類型的注釋(如果存在于此元素上),否則為 null

Throws:

Throw名稱 Throw描述
NullPointerException 如果給定的注釋類為空

isAnnotationPresent

public boolean isAnnotationPresent(Class<? extends Annotation> annotationClass)

如果此元素上存在指定類型的注釋,則返回 true,否則返回 false。 此方法主要是為了方便訪問標(biāo)記注釋而設(shè)計的。

該方法返回的真值等價于:getAnnotation(annotationClass) != null

默認(rèn)方法的主體被指定為上面的代碼。

指定者:

接口 AnnotatedElement 中的 isAnnotationPresent

參數(shù):

參數(shù)名稱 參數(shù)描述
annotationClass 注解類型對應(yīng)的Class對象

返回:

如果此元素上存在指定注釋類型的注釋,則為 true,否則為 false

Throws:

Throw名稱 Throw描述
NullPointerException 如果給定的注釋類為空

getAnnotationsByType

public <A extends Annotation> A[] getAnnotationsByType(Class<A> annotationClass)

從接口復(fù)制的描述:AnnotatedElement

返回與此元素關(guān)聯(lián)的注釋。 如果沒有與該元素關(guān)聯(lián)的注解,則返回值為長度為 0 的數(shù)組。該方法與 AnnotatedElement.getAnnotation(java.lang.Class) 的區(qū)別在于該方法檢測其參數(shù)是否為可重復(fù)注解類型( JLS 9.6),如果是這樣,則嘗試通過“查看”容器注釋來查找該類型的一個或多個注釋。 該方法的調(diào)用者可以隨意修改返回的數(shù)組; 它不會影響返回給其他調(diào)用者的數(shù)組。

指定者:

接口 AnnotatedElement 中的 getAnnotationsByType

類型參數(shù):

類型參數(shù)名稱 類型參數(shù)描述
A 要查詢并返回的注釋類型(如果存在)

參數(shù):

參數(shù)名稱 參數(shù)描述
annotationClass 注解類型對應(yīng)的Class對象

返回:

如果與此元素相關(guān)聯(lián),則指定注釋類型的所有此元素的注釋,否則為長度為零的數(shù)組

Throws:

Throw名稱 Throw描述
NullPointerException 如果給定的注釋類為空

getAnnotations

public Annotation[] getAnnotations()

從接口復(fù)制的描述:AnnotatedElement

返回此元素上存在的注釋。 如果此元素上沒有注釋,則返回值為長度為 0 的數(shù)組。此方法的調(diào)用者可以自由修改返回的數(shù)組; 它不會影響返回給其他調(diào)用者的數(shù)組。

指定者:

接口 AnnotatedElement 中的 getAnnotations

返回:

此元素上存在的注釋

getDeclaredAnnotation

public <A extends Annotation> A getDeclaredAnnotation(Class<A> annotationClass)

從接口復(fù)制的描述:AnnotatedElement

如果直接存在這樣的注釋,則返回此元素的指定類型的注釋,否則返回 null。 此方法忽略繼承的注釋。 (如果此元素上沒有直接存在注釋,則返回 null。)

指定者:

接口 AnnotatedElement 中的 getDeclaredAnnotation

類型參數(shù):

類型參數(shù)名稱 類型參數(shù)描述
A 要查詢并返回的注釋類型(如果直接存在)

參數(shù):

參數(shù)名稱 參數(shù)描述
annotationClass 注解類型對應(yīng)的Class對象

返回:

如果直接存在于此元素上,則此元素的指定注釋類型的注釋,否則為 null

Throws:

Throw名稱 Throw描述
NullPointerException 如果給定的注釋類為空

getDeclaredAnnotations

public Annotation[] getDeclaredAnnotations()

從接口復(fù)制的描述:AnnotatedElement

返回此元素上直接存在的注釋。 此方法忽略繼承的注釋。 如果此元素上沒有直接存在注釋,則返回值為長度為 0 的數(shù)組。此方法的調(diào)用者可以自由修改返回的數(shù)組; 它不會影響返回給其他調(diào)用者的數(shù)組。

指定者:

接口 AnnotatedElement 中的 getDeclaredAnnotations

返回:

直接出現(xiàn)在此元素上的注釋

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號