Java Reflection(三):構造器

原文地址 作者: Jakob Jenkov 譯者:葉文海([email protected]
內容索引
獲取Constructor對象
構造方法參數
利用Constructor對象實例化一個類

利用Java的反射機制你可以檢查一個類的構造方法,並且可以在運行期創建一個對象。這些功能都是通過java.lang.reflect.Constructor這個類實現的。本節將深入的闡述Java Constructor對象。

1. 獲取Constructor對象

我們可以通過Class對象來獲取Constructor類的實例:

Class aClass = ...//獲取Class對象
Constructor[] constructors = aClass.getConstructors();

返回的Constructor數組包含每一個聲明爲公有的(Public)構造方法。
如果你知道你要訪問的構造方法的方法參數類型,你可以用下面的方法獲取指定的構造方法,這例子返回的構造方法的方法參數爲String類型:

Class aClass = ...//獲取Class對象
Constructor constructor =

      aClass.getConstructor(new Class[]{String.class});

如果沒有指定的構造方法能滿足匹配的方法參數則會拋出:NoSuchMethodException。

2. 構造方法參數

你可以通過如下方式獲取指定構造方法的方法參數信息:

Constructor constructor = ... //獲取Constructor對象

Class[] parameterTypes = constructor.getParameterTypes();

3. 利用Constructor對象實例化一個類

你可以通過如下方法實例化一個類:

Constructor constructor = MyObject.class.getConstructor(String.class);

MyObject myObject = (MyObject)constructor.newInstance("constructor-arg1");

constructor.newInstance()方法的方法參數是一個可變參數列表,但是當你調用構造方法的時候你必須提供精確的參數,即形參與實參必須一一對應。在這個例子中構造方法需要一個String類型的參數,那我們在調用newInstance方法的時候就必須傳入一個String類型的參數。

原創文章,轉載請註明: 轉載自併發編程網 – ifeve.com

本文鏈接地址: Java Reflection(三):構造器

發佈了46 篇原創文章 · 獲贊 6 · 訪問量 16萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章