【譯】3. Java反射——建構函式

pengisgood發表於2013-09-05

原文地址:http://tutorials.jenkov.com/java-reflection/constructors.html

=====================================================================================================

     使用Java反射,你可以在執行時檢查類的建構函式和例項化物件。這是通過Java類java.lang.reflect.Constructor做的。本文將會更詳細的介紹Java中的Constructor物件。下面是所涵蓋的主題列表:

  1. Obtaining Constructor Objects (獲取Constructor物件)
  2. Constructor Parameters (Constructor的引數)
  3. 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型別的引數。

 ========================================================================================

  • 目錄

  這是一個本教程到目前為止涵蓋的主題列表:     

  1. Java反射——引言
  2. Java反射——Class物件
  3. Java反射——建構函式
  4. Java反射——欄位
  5. Java反射——方法
  6. Java反射——Getter和Setter
  7. Java反射——私有欄位和私有方法
  8. Java反射——註解
  9. Java反射——泛型
  10. Java反射——陣列
  11. Java反射——動態代理
  12. Java反射——類的動態載入和重新載入

(敬請期待下一篇翻譯)

相關文章