|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
| 上一個類別 下一個類別 | 框架 無框架 | |||||||||
| 摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 | |||||||||
java.lang.Objectjava.lang.Class<T>
T - 由此 Class 物件建模的類別的型別。例如,String.class 的型別是 Class<String>。如果將被建模的類別未知,則使用 Class<?>。public final class Class<T>
Class 類別的實例表示正在運行的 Java 應用程序中的類別和介面。列舉是一種類別,註釋是一種介面。每個陣列屬於被映射為 Class 物件的一個類別,所有具有相同元素型別和維數的陣列都共享該 Class 物件。基本的 Java 型別(boolean、byte、char、short、int、long、float 和 double)和關鍵字 void 也表示為 Class 物件。
Class 沒有公共建構子。Class 物件是在載入類別時由 Java 虛擬機器以及通過調用類別載入器中的 defineClass 方法自動建構的。
以下範例使用 Class 物件來顯示物件的類別名:
void printClassName(Object obj) {
System.out.println("The class of " + obj +
" is " + obj.getClass().getName());
}
還可以使用一個類別文字值(JLS Section 15.8.2)來獲取指定型別(或 void)的 Class 物件。例如:
System.out.println("The name of class Foo is: "+Foo.class.getName());
ClassLoader.defineClass(byte[], int, int),
序列化表格| 方法摘要 | ||
|---|---|---|
|
asSubclass(Class<U> clazz)
強制轉換該 Class 物件,以表示指定的 class 物件所表示的類別的一個子類別。 |
|
T |
cast(Object obj)
將一個物件強制轉換成此 Class 物件所表示的類別或介面。 |
|
boolean |
desiredAssertionStatus()
如果要在調用此方法時將要初始化該類別,則返回將分派給該類別的斷言狀態。 |
|
static Class<?> |
forName(String className)
返回與帶有給定字元串名的類別或介面相關聯的 Class 物件。 |
|
static Class<?> |
forName(String name,
boolean initialize,
ClassLoader loader)
使用給定的類別載入器,返回與帶有給定字元串名的類別或介面相關聯的 Class 物件。 |
|
|
getAnnotation(Class<A> annotationClass)
如果存在該元素的指定型別的註釋,則返回這些註釋,否則返回 null。 |
|
Annotation[] |
getAnnotations()
返回此元素上存在的所有註釋。 |
|
String |
getCanonicalName()
返回 Java Language Specification 中所定義的底層類別的規範化名稱。 |
|
Class<?>[] |
getClasses()
返回一個套件含某些 Class 物件的陣列,這些物件表示屬於此 Class 物件所表示的類別的成員的所有公共類別和介面。 |
|
ClassLoader |
getClassLoader()
返回該類別的類別載入器。 |
|
Class<?> |
getComponentType()
返回表示陣列元件型別的 Class。 |
|
Constructor<T> |
getConstructor(Class<?>... parameterTypes)
返回一個 Constructor 物件,它反映此 Class 物件所表示的類別的指定公共建構子。 |
|
Constructor<?>[] |
getConstructors()
返回一個套件含某些 Constructor 物件的陣列,這些物件反映此 Class 物件所表示的類別的所有公共建構子。 |
|
Annotation[] |
getDeclaredAnnotations()
返回直接存在於此元素上的所有註釋。 |
|
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()
返回 Method 物件的一個陣列,這些物件反映此 Class 物件表示的類別或介面宣告的所有方法,包括公共、保護、預設(包)存取和私有方法,但不包括繼承的方法。 |
|
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()
返回表示某些介面的 Type,這些介面由此物件所表示的類別或介面直接實作。 |
|
Type |
getGenericSuperclass()
返回表示此 Class 所表示的實體(類別、介面、基本型別或 void)的直接父級類別的 Type。 |
|
Class<?>[] |
getInterfaces()
確定此物件所表示的類別或介面實作的介面。 |
|
Method |
getMethod(String name,
Class<?>... parameterTypes)
返回一個 Method 物件,它反映此 Class 物件所表示的類別或介面的指定公共成員方法。 |
|
Method[] |
getMethods()
返回一個套件含某些 Method 物件的陣列,這些物件反映此 Class 物件所表示的類別或介面(包括那些由該類別或介面宣告的以及從父級類別和父級介面繼承的那些的類別或介面)的公共 member 方法。 |
|
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。 |
|
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 |
toString()
將物件轉換為字元串。 |
|
| 從類別 java.lang.Object 繼承的方法 |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
| 方法詳細資訊 |
|---|
public String toString()
getName 返回的那種格式。如果此 Class 物件表示一個基本型別,則此方法返回該基本型別的名稱。如果該 Class 物件表示 void,則此方法返回 "void"。
Object 中的 toString
public static Class<?> forName(String className)
throws ClassNotFoundException
Class 物件。調用此方法等效於:
其中Class.forName(className, true, currentLoader)
currentLoader 表示當前類別的定義類別載入器。
例如,以下程式碼片段返回命名為 java.lang.Thread 的類別的運行時 Class 描述符。
Class t = Class.forName("java.lang.Thread")
調用 forName("X") 將導致命名為 X 的類別被初始化。
className - 所需類別的完全限定名。
Class 物件。
LinkageError - 如果連接失敗
ExceptionInInitializerError - 如果此方法所觸發的初始化失敗
ClassNotFoundException - 如果無法定位該類別
public static Class<?> forName(String name,
boolean initialize,
ClassLoader loader)
throws ClassNotFoundException
Class 物件。(以 getName 所返回的格式)給定一個類別或介面的完全限定名,此方法會試圖定位、載入和連接該類別或介面。指定的類別載入器用於載入該類別或介面。如果參數 loader 為 null,則該類別通過引導類別載入器載入。只有 initialize 參數為 true 且以前未被初始化時,才初始化該類別。
如果 name 表示一個基本型別或 void,則會嘗試在未命名的套件中定位使用者定義的名為 name 的類別。因此,該方法不能用於獲得表示基本型別或 void 的任何 Class 物件。
如果 name 表示一個陣列類別,則會載入但不初始化該陣列類別的元件型別。
例如,在一個實例方法中,表達式:
Class.forName("Foo")
等效於:
Class.forName("Foo", true, this.getClass().getClassLoader())
注意,此方法會拋出與載入、連接或初始化相關的錯誤,Java Language Specification 的第 12.2、12.3 和 12.4 節對此進行了詳細說明。
注意,此方法不檢查調用者是否可存取其請求的類別。
如果 loader 為 null,也存在安全管理器,並且調用者的類別載入器不為 null,則此方法通過 RuntimePermission("getClassLoader") 權限調用安全管理器的 checkPermission 方法,以確保可以存取引導類別載入器。
name - 所需類別的完全限定名initialize - 是否必須初始化類別loader - 用於載入類別的類別載入器
LinkageError - 如果連接失敗
ExceptionInInitializerError - 如果該方法觸發的初始化失敗
ClassNotFoundException - 如果指定的類別載入器無法定位該類別forName(String),
ClassLoader
public T newInstance()
throws InstantiationException,
IllegalAccessException
new 表達式實例化該類別。如果該類別尚未初始化,則初始化這個類別。
注意,此方法傳播 null 建構子所拋出的任何異常,包括已檢查的異常。使用此方法可以有效地繞過編譯時的異常檢查,而在其他情況下編譯器都會執行該檢查。
Constructor.newInstance 方法將該建構子所拋出的任何異常包裹在一個(已檢查的)InvocationTargetException 中,從而避免了這一問題。
IllegalAccessException - 如果該類別或其 null 建構子是不可存取的。
InstantiationException - 如果此 Class 表示一個抽象類別、介面、陣列類別、基本型別或 void;
或者該類別沒有 null 建構子;
或者由於其他某種原因導致實例化失敗。
ExceptionInInitializerError - 如果該方法引發的初始化失敗。
SecurityException - 如果存在安全管理器 s,並滿足下列任一條件:
s.checkMemberAccess(this, Member.PUBLIC) 拒絕創建該類別的新實例
s.checkPackageAccess() 的調用拒絕存取該類別的套件
public boolean isInstance(Object obj)
Object 是否與此 Class 所表示的物件賦值相容。此方法是 Java 語言 instanceof 運算符的動態等效方法。如果指定的 Object 參數非空(null),且能夠在不引發 ClassCastException 的情況下被強制轉換成該 Class 物件所表示的參考型別,則該方法返回 true;否則返回 false。
特別地,當該 Class 物件表示一個已宣告的類別時,若指定的 Object 參數是所表示類別(或其任一子類別)的一個實例,則此方法返回 true;否則返回 false。如果此 Class 物件表示一個陣列類別,且通過身份轉換或擴展參考轉換,指定的 Object 參數能轉換為一個陣列類別的物件,則返回 true;否則返回 false。如果此 Class 物件表示一個介面,且指定 Object 參數的類別或任一父級類別實作了此介面,則此方法返回 true;否則返回 false。如果此 Class 物件表示一個基本型別,則此方法返回 false。
obj - 要檢查的物件
obj 是此類別的實例,則返回 truepublic boolean isAssignableFrom(Class<?> cls)
Class 物件所表示的類別或介面與指定的 Class 參數所表示的類別或介面是否相同,或是否是其父級類別或父級介面。如果是則返回 true;否則返回 false。如果該 Class 表示一個基本型別,且指定的 Class 參數正是該 Class 物件,則該方法返回 true;否則返回 false。
特別地,通過身份轉換或擴展參考轉換,此方法能測試指定 Class 參數所表示的型別能否轉換為此 Class 物件所表示的型別。有關詳細資訊,請參閱 Java Language Specification 的第 5.1.1 和 5.1.4 節。
cls - 要檢查的 Class 物件
cls 型別的物件能否賦予此類別物件的 boolean 值
NullPointerException - 如果指定的 Class 參數為 null。public boolean isInterface()
Class 物件是否表示一個介面型別。
true;否則返回 false。public boolean isArray()
Class 物件是否表示一個陣列類別。
true;否則返回 false。public boolean isPrimitive()
Class 物件是否表示一個基本型別。
有九種預定義的 Class 物件,表示八個基本型別和 void。這些類別物件由 Java 虛擬機器創建,與其表示的基本型別同名,即 boolean、byte、char、short、int、long、float 和 double。
這些物件僅能通過下列宣告為 public static final 的變數存取,也是使此方法返回 true 的僅有的幾個 Class 物件。
Boolean.TYPE,
Character.TYPE,
Byte.TYPE,
Short.TYPE,
Integer.TYPE,
Long.TYPE,
Float.TYPE,
Double.TYPE,
Void.TYPEpublic boolean isAnnotation()
isInterface() 也返回 true,因為所有的註釋型別同時也是介面。
public boolean isSynthetic()
public String getName()
如果此類別物件表示的是非陣列型別的參考型別,則返回該類別的二進制名稱,Java Language Specification, Second Edition 對此作了詳細說明。
如果此類別物件表示一個基本型別或 void,則返回的名字是一個與該基本型別或 void 所對應的 Java 語言關鍵字相同的 String。
如果此類別物件表示一個陣列類別,則名字的內部形式為:表示該陣列巢狀深度的一個或多個 '[' 字元加元素型別名。元素型別名的編碼如下:
Element Type Encoding boolean Z byte B char C class or interface Lclassname; double D float F int I long J short S
類別或介面名 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"
public ClassLoader getClassLoader()
如果存在安全管理器,並且調用者的類別載入器不是 null,也不同於或是請求其類別載入器的類別的類別載入器的祖先,則此方法通過 RuntimePermission("getClassLoader") 權限調用此安全管理器的 checkPermission 方法,以確保可以存取該類別的類別載入器。
如果此物件表示一個基本型別或 void,則返回 null。
SecurityException - 如果存在安全管理器,並且 checkPermission 方法拒絕對該類別類別載入器的存取。ClassLoader,
SecurityManager.checkPermission(java.security.Permission),
RuntimePermissionpublic TypeVariable<Class<T>>[] getTypeParameters()
GenericDeclaration 中的 getTypeParametersGenericSignatureFormatError - 如果常規宣告的常規簽章不符合 Java Virtual Machine Specification, 3rd edition 規定的格式public Class<? super T> getSuperclass()
Class 所表示的實體(類別、介面、基本型別或 void)的父級類別的 Class。如果此 Class 表示 Object 類別、一個介面、一個基本型別或 void,則返回 null。如果此物件表示一個陣列類別,則返回表示該 Object 類別的 Class 物件。
public Type getGenericSuperclass()
如果父級類別是參數化型別,則返回的 Type
物件必須準確反映源程式碼中所使用的實際型別參數。如果以前未曾創建表示父級類別的參數化型別,則創建這個型別。有關參數化型別創建過程的語義,請參閱 ParameterizedType 宣告。如果此 Class 表示 Object
類別、介面、基本型別或 void,則返回 null。如果此物件表示一個陣列類別,則返回表示 Object 類別的 Class 物件。
GenericSignatureFormatError - 如果常規類別簽章不符合 Java Virtual Machine Specification, 3rd edition 規定的格式
TypeNotPresentException - 如果常規父級類別參考不存在的型別宣告
MalformedParameterizedTypeException - 如果常規父級類別參考的參數化型別由於某種原因無法實例化public Package getPackage()
只有該類別的附屬清單中定義了資訊,並且類別載入器使用該清單中的屬性創建了包實例時,包才具有版本和規範屬性。
public Class<?>[] getInterfaces()
如果此物件表示一個類別,則返回值是一個陣列,它包含了表示該類別所實作的所有介面的物件。陣列中介面物件順序與此物件所表示的類別的宣告的 implements 子句中介面名順序一致。例如,給定宣告:
class Shimmer implements FloorWax, DessertTopping { ... }
設 s 的值為 Shimmer 的一個實例;表達式:
的值為表示s.getClass().getInterfaces()[0]
FloorWax 介面的 Class 物件;
的值為表示s.getClass().getInterfaces()[1]
DessertTopping 介面的 Class 物件。
如果此物件表示一個介面,則該陣列包含表示該介面擴展的所有介面的物件。陣列中介面物件順序與此物件所表示的介面的宣告的 extends 子句中介面名順序一致。
如果此物件表示一個不實作任何介面的類別或介面,則此方法返回一個長度為 0 的陣列。
如果此物件表示一個基本型別或 void,則此方法返回一個長度為 0 的陣列。
public Type[] getGenericInterfaces()
如果父級介面是參數化型別,則為它返回的 Type 物件必須準確反映源程式碼中所使用的實際型別參數。如果以前未曾創建表示每個父級介面的參數化型別,則創建這個型別。有關參數化型別創建過程的語義,請參閱 ParameterizedType 宣告。
如果此物件表示一個類別,則返回一個套件含這樣一些物件的陣列,這些物件表示該類別實作的所有介面。陣列中介面物件順序與此物件所表示的類別的宣告的 implements 子句中介面名順序一致。對於陣列類別,介面 Cloneable 和 Serializable 以該順序返回。
如果此物件表示一個介面,則該陣列包含表示該介面直接擴展的所有介面的物件。陣列中介面物件順序與此物件所表示的介面的宣告的 extends 子句中介面名順序一致。
如果此物件表示一個不實作任何介面的類別或介面,則此方法返回一個長度為 0 的陣列。
如果此物件表示一個基本型別或 void,則此方法返回一個長度為 0 的陣列。
GenericSignatureFormatError - 如果常規類別簽章不符合 Java Virtual Machine Specification, 3rd edition 規定的格式
TypeNotPresentException - 如果任意常規父級介面參考不存在的型別宣告
MalformedParameterizedTypeException - 如果任意常規父級介面參考的參數化型別由於某種原因無法實例化public Class<?> getComponentType()
Class。如果此類別不表示陣列類別,則此方法返回 null。
ClassArraypublic int getModifiers()
public、protected、private、final、static、abstract 和 interface 對應的常數組成;它們應當使用 Modifier 類別的方法來解碼。
如果底層類別是陣列類別,則其 public、private 和 protected 修飾符與其元件型別的修飾符相同。如果此 Class 表示一個基本型別或 void,則其 public 修飾符始終為 true,protected 和 private 修飾符始終為 false。如果此物件表示一個陣列類別、一個基本型別或 void,則其 final 修飾符始終為 true,其介面修飾符始終為 false。該規範沒有給定其他修飾符的值。
Java Virtual Machine Specification 中的表 4.1 對修飾符編碼進行了詳細說明。
intModifierpublic Object[] getSigners()
public Method getEnclosingMethod()
Method 物件,它表示底層類別的立即封閉方法。否則返回 null。
特別地,如果底層類別是由一個型別宣告、實例初始值設定項或靜態初始值設定項立即封閉的本地或匿名類別,則此方法返回 null。
public Constructor<?> getEnclosingConstructor()
Constructor 物件,它表示底層類別的立即封閉建構子。否則返回 null。特別地,如果底層類別是由一個型別宣告、實例初始值設定項或靜態初始值設定項立即封閉的本地或匿名類別,則此方法返回 null。
public Class<?> getDeclaringClass()
Class 物件所表示的類別或介面是另一個類別的成員,則返回的 Class 物件表示該物件的宣告類別。如果該類別或介面不是其他類別的成員,則此方法返回 null。如果此 Class 物件表示一個陣列類別、基本型別或 void,則此方法返回 null。
public Class<?> getEnclosingClass()
public String getSimpleName()
陣列的簡稱即附帶 "[]" 的元件型別的簡稱。特別地,元件型別為匿名的陣列的簡稱是 "[]"。
public String getCanonicalName()
public boolean isAnonymousClass()
public boolean isLocalClass()
public boolean isMemberClass()
public Class<?>[] getClasses()
Class 物件的陣列,這些物件表示屬於此 Class 物件所表示的類別的成員的所有公共類別和介面。包括從父級類別繼承的公共類別和介面成員以及該類別宣告的公共類別和介面成員。如果此 Class 物件沒有公共成員類別或介面,則此方法返回一個長度為 0 的陣列。如果此 Class 物件表示一個基本型別、一個陣列類別或 void,則此方法也返回一個長度為 0 的陣列。
Class 物件的陣列
SecurityException - 如果存在安全管理器 s,並滿足下列任一條件:
s.checkMemberAccess(this, Member.PUBLIC) 方法拒絕存取該類別中的類別
s.checkPackageAccess() 的調用拒絕存取該類別的套件
public Field[] getFields()
throws SecurityException
Field 物件的陣列,這些物件反映此 Class 物件所表示的類別或介面的所有可存取公共欄位。返回陣列中的元素沒有排序,也沒有任何特定的順序。如果類別或介面沒有可存取的公共欄位,或者表示一個陣列類別、一個基本型別或 void,則此方法返回長度為 0 的陣列。
特別地,如果該 Class 物件表示一個類別,則此方法返回該類別及其所有父級類別的公共欄位。如果該 Class 物件表示一個介面,則此方法返回該介面及其所有父級介面的公共欄位。
該方法不反映陣列類別的隱式長度欄位。使用者程式碼應使用 Array 類別的方法來操作陣列。
請參閱 Java Language Specification 的第 8.2 和 8.3 節。
Field 物件的陣列
SecurityException - 如果存在安全管理器 s,並滿足下列任一條件:
s.checkMemberAccess(this, Member.PUBLIC) 拒絕存取該類別中的欄位
s.checkPackageAccess() 的調用拒絕存取該類別的套件
public Method[] getMethods()
throws SecurityException
Method 物件的陣列,這些物件反映此 Class 物件所表示的類別或介面(包括那些由該類別或介面宣告的以及從父級類別和父級介面繼承的那些的類別或介面)的公共 member 方法。陣列類別返回從 Object 類別繼承的所有(公共)member 方法。返回陣列中的元素沒有排序,也沒有任何特定的順序。如果此 Class 物件表示沒有公共成員方法的類別或介面,或者表示一個基本型別或 void,則此方法返回長度為 0 的陣列。
類別初始化方法 <clinit> 不包含在返回的陣列中。如果類別宣告了帶有相同參數型別的多個公共成員方法,則它們都會包含在返回的陣列中。
請參閱 Java Language Specification 的第 8.2 和 8.4 節。
Method 物件的陣列
SecurityException - 如果存在安全管理器 s,並滿足下列任一條件:
s.checkMemberAccess(this, Member.PUBLIC) 拒絕存取該類別中的方法
s.checkPackageAccess() 的調用拒絕存取該類別的套件
public Constructor<?>[] getConstructors()
throws SecurityException
Constructor 物件的陣列,這些物件反映此 Class 物件所表示的類別的所有公共建構子。如果該類別沒有公共建構子,或者該類別是一個陣列類別,或者該類別反映一個基本型別或 void,則返回一個長度為 0 的陣列。
注意,此方法返回 Constructor<T> 物件的陣列(即取自此類別建構子的陣列)時,此方法的返回型別是 Constructor<?>[],不是 預期的 Constructor<T>[]。此少量資訊的返回型別是必需的,因為從此方法返回之後,該陣列可能被修改以保存不同類別的 Constructor 物件,而這將違反 Constructor<T>[] 的型別保證。
Constructor 物件陣列
SecurityException - 如果存在安全管理器 s,並滿足下列任一條件:
s.checkMemberAccess(this, Member.PUBLIC) 拒絕存取該類別中的建構子
s.checkPackageAccess() 的調用拒絕存取該類別的套件
public Field getField(String name)
throws NoSuchFieldException,
SecurityException
Field 物件,它反映此 Class 物件所表示的類別或介面的指定公共成員欄位。name 參數是一個 String,用於指定所需欄位的簡稱。
要反映的欄位由下面的演算法確定。設 C 為此物件所表示的類別:
NoSuchFieldException。
請參閱 Java Language Specification 的第 8.2 和 8.3 節。
name - 欄位名
name 指定的該類別的 Field 物件
NoSuchFieldException - 如果沒有找到帶有指定名的欄位。
NullPointerException - 如果 name 為 null
SecurityException - 如果存在安全管理器 s,並滿足下列任一條件:
s.checkMemberAccess(this, Member.PUBLIC) 拒絕存取欄位
s.checkPackageAccess() 的調用拒絕存取該類別的套件
public Method getMethod(String name,
Class<?>... parameterTypes)
throws NoSuchMethodException,
SecurityException
Method 物件,它反映此 Class 物件所表示的類別或介面的指定公共成員方法。name 參數是一個 String,用於指定所需方法的簡稱。parameterTypes 參數是按宣告順序標識該方法形參型別的 Class 物件的一個陣列。如果 parameterTypes 為 null,則按空陣列處理。
如果 name 是 "<init>;" 或 "<clinit>",則將引發 NoSuchMethodException。否則,要反映的方法由下面的演算法確定(設 C 為此物件所表示的類別):
注意,類別中可以有多個比對方法,因為儘管 Java 語言禁止類別宣告帶有相同簽章但不同返回型別的多個方法,但 Java 虛擬機器並不禁止。這增加了虛擬機器的靈活性,可以用來實作各種語言特性。例如,可以使用橋方法 (brige method)實作協變返回;橋方法以及將被覆寫的方法將具有相同的簽章,不同的返回型別。
請參閱Java 語言規範 第 8.2 和 8.4 節。
name - 方法名parameterTypes - 參數列表
name 和 parameterTypes 比對的 Method 物件
NoSuchMethodException - 如果找不到比對的方法,或者方法名為 "<init>" 或 "<clinit>"
NullPointerException - 如果 name 為 null
SecurityException - 如果存在安全管理器 s,並滿足下列任一條件:
s.checkMemberAccess(this, Member.PUBLIC) 拒絕存取方法
s.checkPackageAccess() 的調用拒絕存取該類別的套件
public Constructor<T> getConstructor(Class<?>... parameterTypes)
throws NoSuchMethodException,
SecurityException
Constructor 物件,它反映此 Class 物件所表示的類別的指定公共建構子。parameterTypes 參數是 Class 物件的一個陣列,這些 Class 物件按宣告順序標識建構子的形參型別。
如果此 Class 物件表示非靜態上下文中宣告的內部類別,則形參型別作為第一個參數包括顯示封閉的實例。
要反映的建構子是此 Class 物件所表示的類別的公共建構子,其形參型別與 parameterTypes 所指定的參數型別相比對。
parameterTypes - 參數陣列
parameterTypes 相比對的公共建構子的 Constructor 物件
NoSuchMethodException - 如果找不到比對的方法。
SecurityException - 如果存在安全管理器 s,並滿足下列任一條件:
s.checkMemberAccess(this, Member.PUBLIC) 拒絕存取建構子
s.checkPackageAccess() 的調用拒絕存取該類別的套件
public Class<?>[] getDeclaredClasses()
throws SecurityException
Class 物件的一個陣列,這些物件反映宣告為此 Class 物件所表示的類別的成員的全部類別和介面。包括該類別所宣告的公共、保護、預設(包)存取及私有類別和介面,但不包括繼承的類別和介面。如果該類別不將任何類別或介面宣告為成員,或者此 Class 物件表示基本型別、陣列類別或 void,則此方法返回一個長度為 0 的陣列。
Class 物件的陣列,表示該類別的所有 declared 成員
SecurityException - 如果存在安全管理器 s,並滿足下列任一條件:
s.checkMemberAccess(this, Member.DECLARED) 拒絕存取此類別中已宣告的類別
s.checkPackageAccess() 的調用拒絕存取此類別的套件
public Field[] getDeclaredFields()
throws SecurityException
Field 物件的一個陣列,這些物件反映此 Class 物件所表示的類別或介面所宣告的所有欄位。包括公共、保護、預設(包)存取和私有欄位,但不包括繼承的欄位。
返回陣列中的元素沒有排序,也沒有任何特定的順序。如果該類別或介面不宣告任何欄位,或者此 Class 物件表示一個基本型別、一個陣列類別或 void,則此方法返回一個長度為 0 的陣列。
請參閱 Java Language Specification 的第 8.2 和 8.3 節。
Field 物件的陣列
SecurityException - 如果存在安全管理器 s,並滿足下列任一條件:
s.checkMemberAccess(this, Member.DECLARED) 拒絕存取此類別中已宣告的欄位
s.checkPackageAccess() 的調用拒絕存取該類別的套件
public Method[] getDeclaredMethods()
throws SecurityException
Method 物件的一個陣列,這些物件反映此 Class 物件表示的類別或介面宣告的所有方法,包括公共、保護、預設(包)存取和私有方法,但不包括繼承的方法。
返回陣列中的元素沒有排序,也沒有任何特定的順序。如果該類別或介面不宣告任何方法,或者此 Class 物件
表示一個基本型別、一個陣列類別或 void,則此方法返回一個長度為 0 的陣列。類別初始化方法 <clinit> 不包含在返回陣列中。如果該類別宣告帶有相同參數型別的多個公共成員方法,則它們都包含在返回的陣列中。
請參閱 Java Language Specification 第 8.2 節。
Method 物件的陣列
SecurityException - 如果存在安全管理器 s,並滿足下列任一條件:
s.checkMemberAccess(this, Member.DECLARED) 拒絕存取該類別中已宣告的方法
s.checkPackageAccess() 的調用拒絕存取該類別的套件
public Constructor<?>[] getDeclaredConstructors()
throws SecurityException
Constructor 物件的一個陣列,這些物件反映此 Class 物件表示的類別宣告的所有建構子。它們是公共、保護、預設(包)存取和私有建構子。返回陣列中的元素沒有排序,也沒有任何特定的順序。如果該類別存在一個預設建構子,則它包含在返回的陣列中。
如果此 Class 物件表示一個介面、一個基本型別、一個陣列類別或 void,則此方法返回一個長度為 0 的陣列。
請參閱 Java Language Specification 第 8.2 節。
Constructor 物件的陣列
SecurityException - 如果存在安全管理器 s,並滿足下列任一條件:
s.checkMemberAccess(this, Member.DECLARED) 拒絕存取該類別中已宣告的建構子
s.checkPackageAccess() 的調用拒絕存取此類別的套件
public Field getDeclaredField(String name)
throws NoSuchFieldException,
SecurityException
Field 物件,該物件反映此 Class 物件所表示的類別或介面的指定已宣告欄位。name 參數是一個 String,它指定所需欄位的簡稱。注意,此方法不反映陣列類別的 length 欄位。
name - 欄位名
Field 物件
NoSuchFieldException - 如果找不到帶有指定名稱的欄位。
NullPointerException - 如果 name 為 null
SecurityException - 如果存在安全管理器 s,並滿足下列任一條件:
s.checkMemberAccess(this, Member.DECLARED) 拒絕存取已宣告欄位
s.checkPackageAccess() 的調用拒絕存取該類別的套件
public Method getDeclaredMethod(String name,
Class<?>... parameterTypes)
throws NoSuchMethodException,
SecurityException
Method 物件,該物件反映此 Class 物件所表示的類別或介面的指定已宣告方法。name 參數是一個 String,它指定所需方法的簡稱,parameterTypes 參數是 Class 物件的一個陣列,它按宣告順序標識該方法的形參型別。如果在某個類別中宣告了帶有相同參數型別的多個方法,並且其中有一個方法的返回型別比其他方法的返回型別都特殊,則返回該方法;否則將從中任選一個方法。如果名稱是 "<init>」 或 「<clinit>",則引發一個 NoSuchMethodException。
name - 方法名parameterTypes - 參數陣列
Method 物件
NoSuchMethodException - 如果找不到比對的方法。
NullPointerException - 如果 name 為 null
SecurityException - 如果存在安全管理器 s,並滿足下列任一條件:
s.checkMemberAccess(this, Member.DECLARED) 拒絕存取已宣告方法
s.checkPackageAccess() 的調用拒絕存取該類別的套件
public Constructor<T> getDeclaredConstructor(Class<?>... parameterTypes)
throws NoSuchMethodException,
SecurityException
Constructor 物件,該物件反映此 Class 物件所表示的類別或介面的指定建構子。parameterTypes 參數是 Class 物件的一個陣列,它按宣告順序標識建構子的形參型別。
如果此 Class 物件表示非靜態上下文中宣告的內部類別,則形參型別作為第一個參數包括顯示封閉的實例。
parameterTypes - 參數陣列
Constructor 物件
NoSuchMethodException - 如果找不到比對的方法。
SecurityException - 如果存在安全管理器 s,並滿足下列任一條件:
s.checkMemberAccess(this, Member.DECLARED) 拒絕存取已宣告的建構子
s.checkPackageAccess() 的調用拒絕存取該類別的套件
public InputStream getResourceAsStream(String name)
ClassLoader.getSystemResourceAsStream(java.lang.String)。
在委託前,使用下面的演算法從給定的資源名建構一個絕對資源名:
modified_package_name/name
其中 modified_package_name 是此物件的套件名,該名用 '/' 取代了 '.' ('\u002e')。
name - 所需資源的名稱
InputStream 物件;如果找不到帶有該名稱的資源,則返回 null
NullPointerException - 如果 name 是 nullpublic URL getResource(String name)
ClassLoader.getSystemResource(java.lang.String)。
在委託前,使用下面的演算法從給定的資源名建構一個絕對資源名:
modified_package_name/name
其中 modified_package_name 是此物件的套件名,該名用 '/' 取代了 '.' ('\u002e')。
name - 所需資源的名稱
URL 物件;如果找不到帶有該名稱的資源,則返回 nullpublic ProtectionDomain getProtectionDomain()
ProtectionDomain。如果安裝了安全管理器,則此方法首先通過 RuntimePermission("getProtectionDomain") 權限調用安全管理器的 checkPermission 方法,以確保可以獲取 ProtectionDomain。
SecurityException - 若安全管理器存在,並且其 checkPermission 方法不允許獲取 ProtectionDomain。ProtectionDomain,
SecurityManager.checkPermission(java.security.Permission),
RuntimePermissionpublic boolean desiredAssertionStatus()
很少有開發人員需要此方法;它是為 JRE 自身提供的。(它使類別能夠在初始化時確定是否啟用斷言。)注意,不保證此方法在(或將要)初始化指定類別時返回與(或將與)該指定類別相關的實際斷言狀態。
ClassLoader.setClassAssertionStatus(java.lang.String, boolean),
ClassLoader.setPackageAssertionStatus(java.lang.String, boolean),
ClassLoader.setDefaultAssertionStatus(boolean)public boolean isEnum()
public T[] getEnumConstants()
public T cast(Object obj)
obj - 要強制轉換的物件
ClassCastException - 如果該物件不是 null 也不能分派給型別 T。public <U> Class<? extends U> asSubclass(Class<U> clazz)
此方法的使用場合為:客戶端需要「收縮轉換」 Class 物件的型別,以便將其傳遞給某個 API,且該 API 對它願意接受的 Class 物件進行限制。強制轉換會產生一個編譯時警告,因為強制轉換的正確性無法在運行時檢查(因為常規型別是通過擦除實作的)。
ClassCastException - 如果該 Class 物件不表示指定類別的子類別(這裡「子類別」包括該類別本身)。public <A extends Annotation> A getAnnotation(Class<A> annotationClass)
AnnotatedElement 複製的描述
AnnotatedElement 中的 getAnnotationannotationClass - 對應於註釋型別的 Class 物件
NullPointerException - 如果給定的註釋類別為 nullpublic boolean isAnnotationPresent(Class<? extends Annotation> annotationClass)
AnnotatedElement 複製的描述
AnnotatedElement 中的 isAnnotationPresentannotationClass - 對應於註釋型別的 Class 物件
NullPointerException - 如果給定的註釋類別為 nullpublic Annotation[] getAnnotations()
AnnotatedElement 複製的描述
AnnotatedElement 中的 getAnnotationspublic Annotation[] getDeclaredAnnotations()
AnnotatedElement 複製的描述
AnnotatedElement 中的 getDeclaredAnnotations
|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
| 上一個類別 下一個類別 | 框架 無框架 | |||||||||
| 摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 | |||||||||
版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only。