java反射构造函数_【译】3. Java反射——构造函数
=====================================================================================================
使用Java反射,你可以在運行時檢查類的構造函數和實例化對象。這是通過Java類java.lang.reflect.Constructor做的。本文將會更詳細的介紹Java中的Constructor對象。下面是所涵蓋的主題列表:
Obtaining Constructor Objects?(獲取Constructor對象)
Constructor Parameters?(Constructor的參數)
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類型的參數。
========================================================================================
總結
以上是生活随笔為你收集整理的java反射构造函数_【译】3. Java反射——构造函数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java8 内存模型_java8内存模型
- 下一篇: Java中的数组怎么弄随机数_Java