鍍金池/ 教程/ Java/ Java 構(gòu)造器
Java 數(shù)組
Java 訪問器
Java 泛型
Java 方法
指南
Java 動態(tài)代理
Java 變量
Java 注解
Java 私有變量和私有方法
Java 動態(tài)類加載與重載
java 類
Java 構(gòu)造器

Java 構(gòu)造器

原文地址

作者: Jakob Jenkov 譯者:葉文海(yewenhai@gamil.com)

內(nèi)容索引

  1. 獲取 Constructor 對象
  2. 構(gòu)造方法參數(shù)
  3. 利用 Constructor 對象實(shí)例化一個類

利用 Java 的反射機(jī)制你可以檢查一個類的構(gòu)造方法,并且可以在運(yùn)行期創(chuàng)建一個對象。這些功能都是通過 java.lang.reflect.Constructor 這個類實(shí)現(xiàn)的。本節(jié)將深入的闡述 Java Constructor 對象。

獲取 Constructor 對象

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

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

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

Class aClass = ...//獲取Class對象
Constructor constructor =
  aClass.getConstructor(new Class[]{String.class});

如果沒有指定的構(gòu)造方法能滿足匹配的方法參數(shù)則會拋出:NoSuchMethodException。

構(gòu)造方法參數(shù)

你可以通過如下方式獲取指定構(gòu)造方法的方法參數(shù)信息:

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

利用 Constructor 對象實(shí)例化一個類

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

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

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

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