JavaTM 2 Platform
Standard Ed. 6

java.lang.reflect
類別 Method

java.lang.Object
  繼承者 java.lang.reflect.AccessibleObject
      繼承者 java.lang.reflect.Method
所有已實作的介面:
AnnotatedElement, GenericDeclaration, Member

public final class Method
extends AccessibleObject
implements GenericDeclaration, Member

Method 提供關於類別或介面上單獨某個方法(以及如何存取該方法)的資訊。所反映的方法可能是類別方法或實例方法(包括抽象方法)。

Method 允許在比對要調用的實參與底層方法的形參時進行擴展轉換;但如果要進行收縮轉換,則會拋出 IllegalArgumentException

另請參見:
Member, Class, Class.getMethods(), Class.getMethod(String, Class[]), Class.getDeclaredMethods(), Class.getDeclaredMethod(String, Class[])

欄位摘要
 
從介面 java.lang.reflect.Member 繼承的欄位
DECLARED, PUBLIC
 
方法摘要
 boolean equals(Object obj)
          將此 Method 與指定物件進行比較。
<T extends Annotation>
T
getAnnotation(Class<T> annotationClass)
          如果存在該元素的指定型別的註釋,則返回這些註釋,否則返回 null。
 Annotation[] getDeclaredAnnotations()
          返回直接存在於此元素上的所有註釋。
 Class<?> getDeclaringClass()
          返回表示宣告由此 Method 物件表示的方法的類別或介面的 Class 物件。
 Object getDefaultValue()
          返回由此 Method 實例表示的註釋成員的預設值。
 Class<?>[] getExceptionTypes()
          返回 Class 物件的陣列,這些物件描述了宣告將此 Method 物件表示的底層方法拋出的異常型別。
 Type[] getGenericExceptionTypes()
          返回 Type 物件陣列,這些物件描述了宣告由此 Method 物件拋出的異常。
 Type[] getGenericParameterTypes()
          按照宣告順序返回 Type 物件的陣列,這些物件描述了此 Method 物件所表示的方法的形參型別的。
 Type getGenericReturnType()
          返回表示由此 Method 物件所表示方法的正式返回型別的 Type 物件。
 int getModifiers()
          以整數形式返回此 Method 物件所表示方法的 Java 語言修飾符。
 String getName()
          以 String 形式返回此 Method 物件表示的方法名稱。
 Annotation[][] getParameterAnnotations()
          返回表示按照宣告順序對此 Method 物件所表示方法的形參進行註釋的那個陣列的陣列。
 Class<?>[] getParameterTypes()
          按照宣告順序返回 Class 物件的陣列,這些物件描述了此 Method 物件所表示的方法的形參型別。
 Class<?> getReturnType()
          返回一個 Class 物件,該物件描述了此 Method 物件所表示的方法的正式返回型別。
 TypeVariable<Method>[] getTypeParameters()
          返回 TypeVariable 物件的陣列,這些物件描述了由 GenericDeclaration 物件表示的一般宣告按宣告順序來宣告的型別變數。
 int hashCode()
          返回此 Method 的雜湊碼。
 Object invoke(Object obj, Object... args)
          對帶有指定參數的指定物件調用由此 Method 物件表示的底層方法。
 boolean isBridge()
          如果此方法是 bridge 方法,則返回 true;否則,返回 false
 boolean isSynthetic()
          如果此方法為復合方法,則返回 true;否則,返回 false
 boolean isVarArgs()
          如果將此方法宣告為帶有可變數量的參數,則返回 true;否則,返回 false
 String toGenericString()
          返回描述此 Method 的字元串,包括型別參數。
 String toString()
          返回描述此 Method 的字元串。
 
從類別 java.lang.reflect.AccessibleObject 繼承的方法
getAnnotations, isAccessible, isAnnotationPresent, setAccessible, setAccessible
 
從類別 java.lang.Object 繼承的方法
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

方法詳細資訊

getDeclaringClass

public Class<?> getDeclaringClass()
返回表示宣告由此 Method 物件表示的方法的類別或介面的 Class 物件。

指定者:
介面 Member 中的 getDeclaringClass
返回:
表示宣告底層成員的類別的物件

getName

public String getName()
String 形式返回此 Method 物件表示的方法名稱。

指定者:
介面 Member 中的 getName
返回:
底層成員的簡單名稱

getModifiers

public int getModifiers()
以整數形式返回此 Method 物件所表示方法的 Java 語言修飾符。應該使用 Modifier 類別對修飾符進行解碼。

指定者:
介面 Member 中的 getModifiers
返回:
底層成員的 Java 語言修飾符
另請參見:
Modifier

getTypeParameters

public TypeVariable<Method>[] getTypeParameters()
返回 TypeVariable 物件的陣列,這些物件描述了由 GenericDeclaration 物件表示的一般宣告按宣告順序來宣告的型別變數。如果底層一般宣告沒有宣告型別變數,則返回長度為 0 的陣列。

指定者:
介面 GenericDeclaration 中的 getTypeParameters
返回:
TypeVariable 物件的陣列,這些物件描述了通過一般宣告來宣告的型別變數
拋出:
GenericSignatureFormatError - 如果此一般宣告的一般簽章不符合 Java Virtual Machine Specification, 3rd edition 中指定的格式
從以下版本開始:
1.5

getReturnType

public Class<?> getReturnType()
返回一個 Class 物件,該物件描述了此 Method 物件所表示的方法的正式返回型別。

返回:
此物件所表示的方法的返回型別

getGenericReturnType

public Type getGenericReturnType()
返回表示由此 Method 物件所表示方法的正式返回型別的 Type 物件。

如果返回型別是參數化型別,則返回的 Type 物件必須實際反映源程式碼中所用參數的實際型別。

如果返回型別是型別變數或參數化型別,則創建它。否則將解析它。

返回:
表示底層方法的正式返回型別的 Type 物件
拋出:
GenericSignatureFormatError - 如果一般方法簽章不符合 Java Virtual Machine Specification, 3rd edition 中指定的格式
TypeNotPresentException - 如果底層方法的返回型別參考不存在的型別宣告
MalformedParameterizedTypeException - 如果底層方法的返回型別參考無論如何都無法實例化的參數化型別
從以下版本開始:
1.5

getParameterTypes

public Class<?>[] getParameterTypes()
按照宣告順序返回 Class 物件的陣列,這些物件描述了此 Method 物件所表示的方法的形參型別。如果底層方法不帶參數,則返回長度為 0 的陣列。

返回:
此物件所表示的方法的參數型別

getGenericParameterTypes

public Type[] getGenericParameterTypes()
按照宣告順序返回 Type 物件的陣列,這些物件描述了此 Method 物件所表示的方法的形參型別的。如果底層方法不帶參數,則返回長度為 0 的陣列。

如果形參型別是參數化型別,則為其返回的 Type 物件必須實際反映源程式碼中使用的實際型別參數。

如果形參型別是型別變數或參數化型別,則創建它。否則將解析它。

返回:
按照宣告順序返回表示底層方法的形參型別的 Type 物件陣列
拋出:
GenericSignatureFormatError - 如果一般方法簽章不符合 Java Virtual Machine Specification, 3rd edition 中指定的格式
TypeNotPresentException - 如果底層方法的所有參數型別都參考不存在的型別宣告
MalformedParameterizedTypeException - 如果所有底層方法的參數型別參考無論如何都無法實例化的參數化型別
從以下版本開始:
1.5

getExceptionTypes

public Class<?>[] getExceptionTypes()
返回 Class 物件的陣列,這些物件描述了宣告將此 Method 物件表示的底層方法拋出的異常型別。如果此方法沒有在其 throws 子句中宣告異常,則返回長度為 0 的陣列。

返回:
宣告由此物件表示的方法拋出的異常型別

getGenericExceptionTypes

public Type[] getGenericExceptionTypes()
返回 Type 物件陣列,這些物件描述了宣告由此 Method 物件拋出的異常。如果底層方法沒有在其 throws 子句中宣告異常,則返回長度為 0 的陣列。

如果異常型別是參數化的型別,那麼為它返回的 Type 物件必須實際反映源程式碼中所用參數的實際型別。

如果異常型別是型別變數或參數化型別,則創建它。否則將解析它。

返回:
表示由底層方法拋出的異常型別的 Type 陣列
拋出:
GenericSignatureFormatError - 如果一般方法簽章不符合 Java Virtual Machine Specification, 3rd edition 中指定的格式
TypeNotPresentException - 如果底層方法的 throws 子句參考不存在的型別宣告
MalformedParameterizedTypeException - 如果底層方法的 throws 子句參考無論如何都無法實例化的參數化型別
從以下版本開始:
1.5

equals

public boolean equals(Object obj)
將此 Method 與指定物件進行比較。如果物件相同,則返回 true。如果它們由相同的類別宣告,具有相同的名稱、形參型別和返回型別,則兩個 Method 相同。

覆寫:
類別 Object 中的 equals
參數:
obj - 要與之比較的參考物件。
返回:
如果此物件與 obj 參數相同,則返回 true;否則返回 false
另請參見:
Object.hashCode(), Hashtable

hashCode

public int hashCode()
返回此 Method 的雜湊碼。雜湊碼按底層方法的宣告類別名稱和方法名稱的雜湊碼的異或計算。

覆寫:
類別 Object 中的 hashCode
返回:
此物件的一個雜湊碼值。
另請參見:
Object.equals(java.lang.Object), Hashtable

toString

public String toString()
返回描述此 Method 的字元串。該字元串被格式化為方法存取修飾符(如果有),後面依次跟著方法返回型別、空格、宣告方法的類別、句點、方法名、括號以及由逗號分隔的方法的形參型別列表。如果方法拋出檢查異常,則參數列表後跟著空格、單詞 throws 以及由逗號分隔的拋出異常型別的列表。例如:
    public boolean java.lang.Object.equals(java.lang.Object)
 

存取修飾符按照由 "The Java Language Specification" 指定的規範化順序放置。首先是 publicprotectedprivate,接著是按以下順序的其他修飾符:abstractstaticfinalsynchronizednative

覆寫:
類別 Object 中的 toString
返回:
該物件的字元串表示形式。

toGenericString

public String toGenericString()
返回描述此 Method 的字元串,包括型別參數。該字元串被格式化為方法存取修飾符(如果有),依次後跟用尖括號括起來的由逗號分隔的方法型別參數列表(如果有)、方法的一般返回型別、空格、宣告方法的類別、句點、方法名、括號以及由逗號分隔的方法的一般形參型別列表。空格用於將存取修飾符和型別參數或返回型別互相分隔開。如果不存在型別參數,則型別參數列表會被省略;如果型別參數列表存在,則用空格將列表與類別名分隔開。如果宣告方法以拋出異常,則參數列表後跟空格、單詞 throws 以及由逗號分隔開的拋出一般異常型別的列表。如果不存在型別參數,則型別參數列表會被省略。

存取修飾符按照 "The Java Language Specification" 指定的規範化順序放置。首先是 publicprotectedprivate,接著是按以下順序的其他修飾符:abstractstaticfinalsynchronized native

返回:
描述此 Method 方法的字元串,包括型別參數
從以下版本開始:
1.5

invoke

public Object invoke(Object obj,
                     Object... args)
              throws IllegalAccessException,
                     IllegalArgumentException,
                     InvocationTargetException
對帶有指定參數的指定物件調用由此 Method 物件表示的底層方法。個別參數被自動解包,以便與基本形參相比對,基本參數和參考參數都隨需服從方法調用轉換。

如果底層方法是靜態的,那麼可以忽略指定的 obj 參數。該參數可以為 null。

如果底層方法所需的形參數為 0,則所提供的 args 陣列長度可以為 0 或 null。

如果底層方法是實例方法,則使用動態方法尋找來調用它,這一點記錄在 Java Language Specification, Second Edition 的第 15.12.4.4 節中;在發生基於目標物件的運行時型別的覆寫時更應該這樣做。

如果底層方法是靜態的,並且尚未初始化宣告此方法的類別,則會將其初始化。

如果方法正常完成,則將該方法返回的值返回給調用者;如果該值為基本型別,則首先適當地將其包裹在物件中。但是,如果該值的型別為一組基本型別,則陣列元素 被包裹在物件中;換句話說,將返回基本型別的陣列。如果底層方法返回型別為 void,則該調用返回 null。

參數:
obj - 從中調用底層方法的物件
args - 用於方法調用的參數
返回:
使用參數 argsobj 上指派該物件所表示方法的結果
拋出:
IllegalAccessException - 如果此 Method 物件強制執行 Java 語言存取控制,並且底層方法是不可存取的。
IllegalArgumentException - 如果該方法是實例方法,且指定物件參數不是宣告底層方法的類別或介面(或其中的子類別或實作程序)的實例;如果實參和形參的數量不相同;如果基本參數的解包轉換失敗;如果在解包後,無法通過方法調用轉換將參數值轉換為相應的形參型別。
InvocationTargetException - 如果底層方法拋出異常。
NullPointerException - 如果指定物件為 null,且該方法是一個實例方法。
ExceptionInInitializerError - 如果由此方法引起的初始化失敗。

isBridge

public boolean isBridge()
如果此方法是 bridge 方法,則返回 true;否則,返回 false

返回:
當且僅當此方法是由 Java Language Specification 定義的 bridge 方法時,才返回 true。
從以下版本開始:
1.5

isVarArgs

public boolean isVarArgs()
如果將此方法宣告為帶有可變數量的參數,則返回 true;否則,返回 false

返回:
當且僅當將此方法宣告為帶有可變數量的參數時,才返回 true
從以下版本開始:
1.5

isSynthetic

public boolean isSynthetic()
如果此方法為復合方法,則返回 true;否則,返回 false

指定者:
介面 Member 中的 isSynthetic
返回:
當且僅當此方法是由 Java Language Specification 定義的復合方法時,才返回 true。
從以下版本開始:
1.5

getAnnotation

public <T extends Annotation> T getAnnotation(Class<T> annotationClass)
從介面 AnnotatedElement 複製的描述
如果存在該元素的指定型別的註釋,則返回這些註釋,否則返回 null。

指定者:
介面 AnnotatedElement 中的 getAnnotation
覆寫:
類別 AccessibleObject 中的 getAnnotation
參數:
annotationClass - 對應於註釋型別的 Class 物件
返回:
如果該元素的指定註釋型別的註釋存在於此物件上,則返回這些註釋,否則返回 null
拋出:
NullPointerException - 如果給定的註釋類別為 null
從以下版本開始:
1.5

getDeclaredAnnotations

public Annotation[] getDeclaredAnnotations()
從介面 AnnotatedElement 複製的描述
返回直接存在於此元素上的所有註釋。與此介面中的其他方法不同,該方法將忽略繼承的註釋。(如果沒有註釋直接存在於此元素上,則返回長度為零的一個陣列。)該方法的調用者可以隨意修改返回的陣列;這不會對其他調用者返回的陣列產生任何影響。

指定者:
介面 AnnotatedElement 中的 getDeclaredAnnotations
覆寫:
類別 AccessibleObject 中的 getDeclaredAnnotations
返回:
直接存在於此元素上的所有註釋
從以下版本開始:
1.5

getDefaultValue

public Object getDefaultValue()
返回由此 Method 實例表示的註釋成員的預設值。如果該成員為基本型別,則返回相應外覆器型別的實例。如果不存在與該成員關聯的預設值或者該成員實例不表示註釋型別的宣告成員,則返回 null。

返回:
由此 Method 實例表示的註釋成員的預設值。
拋出:
TypeNotPresentException - 如果註釋型別是 Class 且找不到預設類別值的定義。
從以下版本開始:
1.5

getParameterAnnotations

public Annotation[][] getParameterAnnotations()
返回表示按照宣告順序對此 Method 物件所表示方法的形參進行註釋的那個陣列的陣列。(如果底層方法沒有參數,則返回長度為零的陣列。如果該方法有一個或多個參數,則為每個不帶註釋的參數返回長度為零的巢狀陣列。)返回陣列中包含的註釋物件是可序列化的。此方法的調用者可以隨意修改返回的陣列;這不會對其他調用者返回的陣列產生任何影響。

返回:
表示按宣告順序對此 Method 物件所表示方法的形參進行註釋的那個陣列的陣列
從以下版本開始:
1.5

JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only