JavaTM 2 Platform
Standard Ed. 6

java.lang.reflect
類別 Constructor<T>

java.lang.Object
  繼承者 java.lang.reflect.AccessibleObject
      繼承者 java.lang.reflect.Constructor<T>
型別參數:
T - 在其中宣告建構子的類別。
所有已實作的介面:
AnnotatedElement, GenericDeclaration, Member

public final class Constructor<T>
extends AccessibleObject
implements GenericDeclaration, Member

Constructor 提供關於類別的單個建構子的資訊以及對它的存取權限。

Constructor 允許在將實參與帶有底層建構子的形參的 newInstance() 比對時進行擴展轉換,但是如果發生收縮轉換,則拋出 IllegalArgumentException

另請參見:
Member, Class, Class.getConstructors(), Class.getConstructor(Class[]), Class.getDeclaredConstructors()

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

方法詳細資訊

getDeclaringClass

public Class<T> getDeclaringClass()
返回 Class 物件,該物件表示宣告由此 Constructor 物件表示的建構子的類別。

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

getName

public String getName()
以字元串形式返回此建構子的名稱。它總是與建構子的宣告類別的簡單名稱相同。

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

getModifiers

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

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

getTypeParameters

public TypeVariable<Constructor<T>>[] getTypeParameters()
按照宣告順序返回一組 TypeVariable 物件,這些物件表示通過此 GenericDeclaration 物件所表示的一般宣告來宣告的型別變數。如果底層一般宣告未宣告任何型別的變數,則返回一個長度為 0 的陣列。

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

getParameterTypes

public Class<?>[] getParameterTypes()
按照宣告順序返回一組 Class 物件,這些物件表示此 Constructor 物件所表示建構子的形參型別。如果底層建構子不帶任何參數,則返回一個長度為 0 的陣列。

返回:
此物件表示的建構子的參數型別

getGenericParameterTypes

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

如果形參型別是一個參數化型別,那麼為它返回的 Type 物件必須準確地反映源程式碼中使用的實際型別參數。

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

返回:
按照宣告順序返回一組 Type 物件,該物件表示底層方法的形參型別
拋出:
GenericSignatureFormatError - 如果這個一般方法的簽章不符合 Java Virtual Machine Specification, 3rd edition 指定的格式
TypeNotPresentException - 如果任何底層方法的參數型別參考了不存在的型別宣告
MalformedParameterizedTypeException - 如果任何底層方法的參數型別參考了因某種原因而無法實例化的參數化型別
從以下版本開始:
1.5

getExceptionTypes

public Class<?>[] getExceptionTypes()
返回一組表示宣告要拋出的異常型別的 Class 物件,這些異常是由此 Constructor 物件表示的底層建構子拋出的。如果該建構子宣告其 throws 子句中沒有任何異常,則返回一個長度為 0 的陣列。

返回:
宣告由此物件表示的建構子拋出的異常型別

getGenericExceptionTypes

public Type[] getGenericExceptionTypes()
返回一組 Type 物件,這些物件表示宣告要由此 Constructor 物件拋出的異常。如果底層方法宣告其 throws 子句中沒有任何異常,則返回一個長度為 0 的陣列。

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

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

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

equals

public boolean equals(Object obj)
將此 Constructor 物件與指定的物件進行比較。如果物件相同,則返回 true。如果由相同的類別宣告並且具有相同的形參型別,那麼這兩個 Constructor 物件是相同的。

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

hashCode

public int hashCode()
返回此 Constructor 的雜湊碼。該雜湊碼與底層建構子的宣告類別名的雜湊碼相同。

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

toString

public String toString()
返回描述此 Constructor 的字元串。該字元串是作為建構子存取修飾符(如果有)格式化的,其後面是宣告類別的完全限定名,再往後是建構子形參型別的加括號的、逗號分隔的列表。例如:
    public java.util.Hashtable(int,float)
 

建構子唯一可能的修飾符是存取修飾符 publicprotectedprivate。這些修飾符只能出現一個,或者一個也不出現(如果建構子具有預設(包)存取權)。

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

toGenericString

public String toGenericString()
返回描述此 Constructor 的字元串,其中包括型別參數。該字元串是作為建構子存取修飾符(如果有)格式化的,其後面是建構子的型別參數(如果有)的加尖括號的、逗號分隔的列表,再往後是宣告類別的完全限定名,再往後是該建構子的一般形參型別的加括號的、逗號分隔的列表。空格用來分隔存取修飾符與存取修飾符,以及存取修飾符與型別參數或返回值。如果沒有型別參數,則省略型別參數列表;如果存在型別參數列表,則用空格分隔列表與類別名。如果宣告建構子拋出異常,則參數列表後跟著一個空格,再往後是單詞 "throws" ,再往後是用逗號分隔的所拋出異常型別的列表。

建構子唯一可能的修飾符是存取修飾符 publicprotectedprivate。這些修飾符只能出現一個,或者一個也不出現(如果建構子具有預設(包)存取權)。

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

newInstance

public T newInstance(Object... initargs)
              throws InstantiationException,
                     IllegalAccessException,
                     IllegalArgumentException,
                     InvocationTargetException
使用此 Constructor 物件表示的建構子來創建該建構子的宣告類別的新實例,並用指定的初始化參數初始化該實例。個別參數會自動解包,以比對基本形參,必要時,基本參數和參考參數都要進行方法調用轉換。

如果底層建構子所需形參數為 0,則所提供的 initargs 陣列的長度可能為 0 或 null。

如果建構子的宣告類別是非靜態上下文的內部類別,則建構子的第一個參數需要是封閉實例;請參閱Java 語言規範 第 15.9.3 節。

如果所需的存取檢查和參數檢查獲得成功並且實例化繼續進行,這時建構子的宣告類別尚未初始化,則初始化這個類別。

如果建構子正常完成,則返回新創建且已初始化的實例。

參數:
initargs - 將作為變數傳遞給建構子調用的物件陣列;基本型別的值被包裹在適當型別的套件裝器物件(如 Float 中的 float)中。
返回:
通過調用此物件表示的建構子來創建的新物件
拋出:
IllegalAccessException - 如果此 Constructor 物件實施 Java 語言存取控制並且底層建構子是不可存取的。
IllegalArgumentException - 如果實參和形參的數量不同;如果基本參數的解包轉換失敗;如果在可能的解包後,無法通過方法調用轉換將參數值轉換為相應的形參型別;如果此建構子屬於列舉型別。
InstantiationException - 如果宣告底層建構子的類別表示抽象類別。
InvocationTargetException - 如果底層建構子拋出異常。
ExceptionInInitializerError - 如果此方法引發的初始化失敗。

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

getParameterAnnotations

public Annotation[][] getParameterAnnotations()
按照宣告順序返回一組陣列,這些陣列表示通過此 Constructor 物件表示的方法的形參上的註釋。(如果底層方法沒有參數,則返回一個長度為零的陣列。如果該方法有一個或多個參數,則為每個不帶註釋的參數返回一個長度為零的巢狀陣列。)包含在返回陣列中的註釋物件是可序列化的。此方法的調用者可以自由地修改返回的陣列;它對返回給其他調用者的陣列沒有影響。

返回:
按照宣告順序返回的一組陣列,這些陣列表示此 Constructor 物件表示的方法的形參上的註釋
從以下版本開始:
1.5

JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

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