1. 程式人生 > >class.forName(String name).newInstance()的用法

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構造。