|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
java.lang.Object java.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")
注意,此方法會拋出與載入、連接或初始化相關的錯誤,Java Language Specification 的第 12.2、12.3 和 12.4 節對此進行了詳細說明。 注意,此方法不檢查調用者是否可存取其請求的類別。Class.forName("Foo", true, this.getClass().getClassLoader())
如果 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.TYPE
public 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)
,
RuntimePermission
public TypeVariable<Class<T>>[] getTypeParameters()
GenericDeclaration
中的 getTypeParameters
GenericSignatureFormatError
- 如果常規宣告的常規簽章不符合 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。
Class
Array
public 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 對修飾符編碼進行了詳細說明。
int
Modifier
public 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)
,
RuntimePermission
public 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
中的 getAnnotation
annotationClass
- 對應於註釋型別的 Class 物件
NullPointerException
- 如果給定的註釋類別為 nullpublic boolean isAnnotationPresent(Class<? extends Annotation> annotationClass)
AnnotatedElement
複製的描述
AnnotatedElement
中的 isAnnotationPresent
annotationClass
- 對應於註釋型別的 Class 物件
NullPointerException
- 如果給定的註釋類別為 nullpublic Annotation[] getAnnotations()
AnnotatedElement
複製的描述
AnnotatedElement
中的 getAnnotations
public Annotation[] getDeclaredAnnotations()
AnnotatedElement
複製的描述
AnnotatedElement
中的 getDeclaredAnnotations
|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only。