【譯】3. Java反射——構造函數


原文地址: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反射——類的動態加載和重新加載

(敬請期待下一篇翻譯)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM