1. 程式人生 > >Java:構造方法

Java:構造方法

獲取構造方法

1.藉助Class類某些可以獲取對應類中宣告的構造方法例項物件,這些方法有:

⑴Constructor[] getConstrutors():返回該Class物件表示類包含的所有public構造方法(不含繼承)所對應Constructor物件陣列。

⑵Constructor getConstrutor(Class<?>... parameterTypes):返回與該Class物件表示類中引數列表相匹配的public建構函式(不含繼承)對應的Constructor物件。

⑶Constructor<?>[] getDeclaredConstructors():返回一個該Class物件表示類中宣告的所有構造方法(不區分訪問許可權)對應的Constructor物件陣列。

⑷Constructor<T> getDeclaredConstructor(Class<?>... parameterTypes):返回與該Class物件表示類中定義的形參型別相匹配的構造方法(不區分訪問許可權)的Constructor物件。

parameterTypes的解釋:

如果方法引數的資料型別為基本資料型別,則parameterType應為基本資料型別包裝類.TYPE;如果方法引數的資料型別為基本資料型別包裝類,則的資料型別應為包裝類.class 

操作構造方法——獲取構造方法資訊

1.通過Constructor類某些方法可以獲取某個構造方法的資訊,這些方法如下:

Class<T> getDeclaringClass():返回宣告Constructor物件對應構造方法的類的Class物件。

int getModifiers():以整數形式返回Constructor物件表示的建構函式的修飾符。

String getName() :以字串形式返回Constructor物件所表示得構造方法的名稱。

Class<?>[] getParameterTypes():返回由Constructor物件所表示的構造方法的形參型別對應Class物件組成的陣列此 。如果構造方法沒有引數,則陣列長度為0。

注意:

  • getConstructors()和getConstructor(Class<?>... parameterTypes)方法均無法獲取非public類中預設無參構造方法對應的Constructor物件。(參見程式碼1)
  • getDeclaredConstructors()和getDeclaredConstructor(Class<?>... parameterTypes)方法可以獲取非public類中預設無參構造方法對應的Constructor物件。 (參見程式碼2)

操作構造方法——建立物件

1.通過Constructor類某些方法可以建立物件,這些方法如下:

void setAccessible(boolean flag):呼叫建構函式時是否忽略訪問許可權的影響,true表示忽略,false表示不忽略。

T newInstance(Object... initargs):使用此Constructor物件表示的構造方法來建立宣告該構造方法類的新物件。initargs為傳入該構造方法中的引數,如果該構造方法沒有引數,則可設定為null或一個長度為0的陣列。

建立物件方式

1.可以通過如下三種方式建立物件

通過new關鍵字建立物件。

通過呼叫Constructor類的newInstance方法可以建立物件。

通過呼叫Class類中的newInstance()方法建立物件:

T newInstance():建立此 Class類所表示類的新物件,等效於使用new關鍵字呼叫無參構造方法建立物件,如下示例: