原文地址:http://tutorials.jenkov.com/java-reflection/constructors.html
=====================================================================================================
使用Java反射,你可以在執行時檢查類的建構函式和例項化物件。這是通過Java類java.lang.reflect.Constructor做的。本文將會更詳細的介紹Java中的Constructor物件。下面是所涵蓋的主題列表:
- Obtaining Constructor Objects (獲取Constructor物件)
- Constructor Parameters (Constructor的引數)
- Instantiating Objects using Constructor Object (通過Constructor物件例項化物件)
=====================================================================================================
- Obtaining Constructor Objects
Constructor物件可以從Class物件中獲取。下面是一個例子:
Class aClass = ...//obtain class object Constructor[] constructors = aClass.getConstructors();
陣列Constructor[ ]將會儲存在類中所有宣告為public的建構函式的Constructor例項。
如果你知道你要訪問的建構函式的精確引數型別,你可以這樣做而不是獲取所有的建構函式。這個例子返回給定類的一個public的且接收一個String型別的變數作為引數的建構函式:
Class aClass = ...//obtain class object Constructor constructor = aClass.getConstructor(new Class[]{String.class});
如果沒有和給定的引數相匹配的建構函式,會丟擲NoSuchMethodException異常。
=====================================================================================================
- Constructor Parameters
你可以像這樣讀取一個給定的建構函式所接收的引數:
Constructor constructor = ... // obtain constructor - see above Class[] parameterTypes = constructor.getParameterTypes();
=====================================================================================================
- Instantiating Objects using Constructor Object
你可以像這樣例項化一個物件:
//get constructor that takes a String as argument Constructor constructor = MyObject.class.getConstructor(String.class); MyObject myObject = (MyObject) constructor.newInstance("constructor-arg1");
Constructor.newInstance( )方法接受不定個數的引數,但是你必須提供你呼叫的建構函式需要的每個引數。在這種情況下,呼叫接受一個String型別引數的建構函式,你必須提供一個String型別的引數。
========================================================================================
- 目錄
這是一個本教程到目前為止涵蓋的主題列表:
- Java反射——引言
- Java反射——Class物件
- Java反射——建構函式
- Java反射——欄位
- Java反射——方法
- Java反射——Getter和Setter
- Java反射——私有欄位和私有方法
- Java反射——註解
- Java反射——泛型
- Java反射——陣列
- Java反射——動態代理
- Java反射——類的動態載入和重新載入
(敬請期待下一篇翻譯)