class.forName(String name).newInstance()的用法
阿新 • • 發佈:2018-12-20
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構造。