newInstance()与new的区别

第一点:类加载方式不一样

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();

猜你喜欢

转载自blog.csdn.net/vip97yigang/article/details/78165123