class.forName(String name).newInstance()的用法

class.forName()

public static Class<?> forName(String className)
                        throws ClassNotFoundException
返回與帶有給定字符串名的類或接口相關聯的 Class 對象。
調用 forName("X") 將導致命名爲 X 的類被初始化。
public T newInstance()
              throws InstantiationException,
                     IllegalAccessException
創建此 Class 對象所表示的類的一個新實例。如同用一個帶有一個空參數列表的 new 表達式實例化該類。如果該類尚未初始化,則初始化這個類。

注意,此方法傳播 null 構造方法所拋出的任何異常,包括已檢查的異常。使用此方法可以有效地繞過編譯時的異常檢查,而在其他情況下編譯器都會執行該檢查。 Constructor.newInstance 方法將該構造方法所拋出的任何異常包裝在一個(已檢查的)InvocationTargetException 中,從而避免了這一問題。

 

返回:
此對象所表示的類的一個新分配的實例。
newInstance實際上是把new這個方式分解爲兩步,即,首先調用class的加載方法加載某個類,然後實例化。這樣分步的好處是顯而易見的。我們可以在調用class的靜態加載方法forName時獲得更好的靈活性,提供給了我們降耦的手段。[補充:]newInstance: 弱類型。低效率。只能調用無參構造。new: 強類型。相對高效。能調用任何public構造。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章