上一篇文章中已經可以獲取到類的字節碼文件。那麼該如何實例化對象呢?
1.根據字節碼文件創建Person對象(無參構造函數)
Object obj=clazz.newInstance();
方法說明:newInstance()
創建此 Class 對象所表示的類的一個新實例。
即可產生Person類的對象,默認調用的是Person的無參構造函數
2.那麼如果該類沒有無參構造函數,該如何獲取呢?
查閱JavaApi可以發現這樣的一個函數
Constructor<?>[] |
getConstructors() 返回一個包含某些 Constructor 對象的數組,這些對象反映此 Class 對象所表示的類的所有公共構造方法。 |
那麼什麼是返回的參數Constructor呢 ?
Constructor
提供關於類的單個構造方法的信息以及對它的訪問權限。(也就是說獲取構造函數)
Constructor constructor=clazz.getConstructor(String.class,int.class);
//通過構造器初始化隊象
Object obj=constructor.newInstance("xiaoming",38);
函數運行結果爲:person param run..xiaoming:38
這樣就會直接調用Person類的有參構造函數(注意這裏的getConstructor參數爲String.class,int.class)
以上方法就是獲得該類的實例化對象。