1. 程式人生 > >java.lang.reflect 類 Method

java.lang.reflect 類 Method

java.lang.reflect
類 Method

public final class Method
extends AccessibleObjectimplements GenericDeclaration, Member

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

Method 允許在匹配要呼叫的實參與底層方法的形參時進行擴充套件轉換;但如果要進行收縮轉換,則會丟擲 IllegalArgumentException

欄位摘要
   
方法摘要
 boolean
          將此 Method
與指定物件進行比較。
(Class<T> annotationClass)
          如果存在該元素的指定型別的註釋,則返回這些註釋,否則返回 null。
 Class<?>
          返回表示宣告由此 Method 物件表示的方法的類或介面的 Class 物件。
 Class<?>[]
          返回 Class 物件的陣列,這些物件描述了宣告將此 Method 物件表示的底層方法丟擲的異常型別。
 Type[]
          返回 Type 物件陣列,這些物件描述了宣告由此 Method 物件丟擲的異常。
 Type[]
          按照宣告順序返回 Type 物件的陣列,這些物件描述了此 Method 物件所表示的方法的形參型別的。
 Type
          返回表示由此 Method 物件所表示方法的正式返回型別的 Type 物件。
 int
          以整數形式返回此 Method 物件所表示方法的 Java 語言修飾符。

          以 String 形式返回此 Method 物件表示的方法名稱。
 Class<?>[]
          按照宣告順序返回 Class 物件的陣列,這些物件描述了此 Method 物件所表示的方法的形參型別。
 Class<?>
          返回一個 Class 物件,該物件描述了此 Method 物件所表示的方法的正式返回型別。

          返回 TypeVariable 物件的陣列,這些物件描述了由 GenericDeclaration 物件表示的一般宣告按宣告順序來宣告的型別變數。
 int
          返回此 Method 的雜湊碼。

          對帶有指定引數的指定物件呼叫由此 Method 物件表示的底層方法。
 boolean
          如果此方法是 bridge 方法,則返回 true;否則,返回 false
 boolean
          如果此方法為複合方法,則返回 true;否則,返回 false
 boolean
          如果將此方法宣告為帶有可變數量的引數,則返回 true;否則,返回 false
     
方法詳細資訊

getDeclaringClass

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

getName

public String getName()
String 形式返回此 Method 物件表示的方法名稱。
返回:
底層成員的簡單名稱

getModifiers

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

getTypeParameters

public TypeVariable<Method>[] getTypeParameters()
返回 TypeVariable 物件的陣列,這些物件描述了由 GenericDeclaration 物件表示的一般宣告按宣告順序來宣告的型別變數。如果底層一般宣告沒有宣告型別變數,則返回長度為 0 的陣列。
返回:
TypeVariable 物件的陣列,這些物件描述了通過一般宣告來宣告的型別變數
丟擲:
- 如果此一般宣告的一般簽名不符合 Java Virtual Machine Specification, 3rd edition 中指定的格式
從以下版本開始:
1.5

getReturnType

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

getGenericReturnType

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

如果返回型別是引數化型別,則返回的 Type 物件必須實際反映原始碼中所用引數的實際型別。

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

返回:
表示底層方法的正式返回型別的 Type 物件
丟擲:
- 如果一般方法簽名不符合 Java Virtual Machine Specification, 3rd edition 中指定的格式
從以下版本開始:
1.5

getParameterTypes

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

getGenericParameterTypes

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

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

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

返回:
按照宣告順序返回表示底層方法的形參型別的 Type 物件陣列
丟擲:
- 如果一般方法簽名不符合 Java Virtual Machine Specification, 3rd edition 中指定的格式
從以下版本開始:
1.5

getExceptionTypes

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

getGenericExceptionTypes

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

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

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

返回:
表示由底層方法丟擲的異常型別的 Type 陣列
丟擲:
- 如果一般方法簽名不符合 Java Virtual Machine Specification, 3rd edition 中指定的格式
從以下版本開始:
1.5

equals

public boolean equals(Object obj)
將此 Method 與指定物件進行比較。如果物件相同,則返回 true。如果它們由相同的類宣告,具有相同的名稱、形參型別和返回型別,則兩個 Method 相同。
引數:
obj - 要與之比較的引用物件。
返回:
如果此物件與 obj 引數相同,則返回 true;否則返回 false
另請參見:

hashCode

public int hashCode()

toString

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

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

返回:
該物件的字串表示形式。

toGenericString

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

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

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

invoke

對帶有指定引數的指定物件呼叫由此 Method 物件表示的底層方法。個別引數被自動解包,以便與基本形參相匹配,基本引數和引用引數都隨需服從方法呼叫轉換。

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

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

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

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

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

引數:
obj - 從中呼叫底層方法的物件
args - 用於方法呼叫的引數
返回:
使用引數 argsobj 上指派該物件所表示方法的結果
丟擲:
- 如果此 Method 物件強制執行 Java 語言訪問控制,並且底層方法是不可訪問的。
- 如果該方法是例項方法,且指定物件引數不是宣告底層方法的類或介面(或其中的子類或實現程式)的例項;如果實參和形參的數量不相同;如果基本引數的解包轉換失敗;如果在解包後,無法通過方法呼叫轉換將引數值轉換為相應的形參型別。

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
返回:
當且僅當此方法是由 Java Language Specification 定義的複合方法時,才返回 true。
從以下版本開始:
1.5

getAnnotation

public <T extends Annotation> T getAnnotation(Class<T> annotationClass)
如果存在該元素的指定型別的註釋,則返回這些註釋,否則返回 null。
引數:
annotationClass - 對應於註釋型別的 Class 物件
返回:
如果該元素的指定註釋型別的註釋存在於此物件上,則返回這些註釋,否則返回 null
丟擲:
從以下版本開始:
1.5

getDeclaredAnnotations

public Annotation[] getDeclaredAnnotations()
返回直接存在於此元素上的所有註釋。與此介面中的其他方法不同,該方法將忽略繼承的註釋。(如果沒有註釋直接存在於此元素上,則返回長度為零的一個數組。)該方法的呼叫者可以隨意修改返回的陣列;這不會對其他呼叫者返回的陣列產生任何影響。
返回:
直接存在於此元素上的所有註釋
從以下版本開始:
1.5

getDefaultValue

public Object getDefaultValue()
返回由此 Method 例項表示的註釋成員的預設值。如果該成員為基本型別,則返回相應包裝器型別的例項。如果不存在與該成員關聯的預設值或者該成員例項不表示註釋型別的宣告成員,則返回 null。
返回:
由此 Method 例項表示的註釋成員的預設值。
丟擲:
從以下版本開始:
1.5

getParameterAnnotations

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