作者: Jakob Jenkov 譯者:葉文海(yewenhai@gamil.com)
利用 Java 的反射機(jī)制你可以檢查一個類的構(gòu)造方法,并且可以在運行期創(chuàng)建一個對象。這些功能都是通過 java.lang.reflect.Constructor 這個類實現(xiàn)的。本節(jié)將深入的闡述 Java Constructor 對象。
我們可以通 過 Class 對象來獲取 Constructor 類的實例:
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ù)信息:
Constructor constructor = ... //獲取Constructor對象
Class[] parameterTypes = constructor.getParameterTypes();
你可以通過如下方法實例化一個類:
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ù),即形參與實參必須一一對應(yīng)。在這個例子中構(gòu)造方法需要一個 String 類型的參數(shù),那我們在調(diào)用 newInstance 方法的時候就必須傳入一個 String 類型的參數(shù)。
本文鏈接地址: Java Reflection(三):構(gòu)造器