第一点:类加载方式不一样
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();