第一點:類加載方式不一樣
newInstance()是一個方法,而new是關鍵字。
使用newInstance時候,就必須保證:1、這個類已經加載;2、這個類已經連接配接了。而完成上面兩個步驟的正是Class的靜态方法forName(),這個靜态方法調用了啟動類加載器(就是加載java API的那個加載器)。 這裡涉及到了Java的類加載,不太清楚的可以看這裡Java類加載原理
使用關鍵字new建立一個類的時候,這個類可以沒有被加載。
第二點:構造方法不同
new關鍵字能調用任何構造方法。
newInstance()隻能調用無參構造方法。
第三點:執行效率不同
new關鍵字是強類型的,效率相對較高。
newInstance()是弱類型的,效率相對較低。
注意:
Java中工廠模式經常使用newInstance()方法來建立對象,其中ExampleInterface是Example的接口,可以寫成如下形式:
String className = "Example";
class c = Class.forName(className);
factory = (ExampleInterface)c.newInstance();