閱讀43 返回首頁    go 阿裏雲 go 技術社區[雲棲]


Java Reflection(三):構造器

內容索引
獲取Constructor對象
構造方法參數
利用Constructor對象實例化一個類

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

獲取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。

構造方法參數

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

  Constructor constructor = ... //獲取Constructor對象
  Class[] parameterTypes = constructor.getParameterTypes();

利用Constructor對象實例化一個類

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

  Constructor constructor = MyObject.class.getConstructor(String.class);
  MyObject myObject = (MyObject)
         constructor.newInstance("constructor-arg1");

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

最後更新:2017-05-23 13:31:46

  上一篇:go  並發網2014.10月閱讀量Top10
  下一篇:go  《GO並發編程實戰》—— 條件變量