new的常用形式:
A a=new A();
newInstance的常用形式:
Class aClass=Class.forName("A");
Object a=aClass.newInstance;
从JVM的角度看,我们使用关键字new创建一个类的时候,这个类可以没有被加载。但是使用newInstance()方法的时候,就必须保证:1、这个类已经加载;2、这个类已经连接了。而完成上面两个步骤的正是Class的静态方法forName()所完成的,这个静态方法调用了启动类加载器,即加载java API的那个加载器。现在可以看出,newInstance()实际上是把new这个方式分解为两步,即首先调用Class加载方法加载某个类,然后实例化。
最后用最简单描述来区分new关键字和newInstance()办法区别:
newInstance: 弱类型低效率只能调用无参构造
new: 强类型相对高效能调用任何public构造
A a=new A();
newInstance的常用形式:
Class aClass=Class.forName("A");
Object a=aClass.newInstance;
从JVM的角度看,我们使用关键字new创建一个类的时候,这个类可以没有被加载。但是使用newInstance()方法的时候,就必须保证:1、这个类已经加载;2、这个类已经连接了。而完成上面两个步骤的正是Class的静态方法forName()所完成的,这个静态方法调用了启动类加载器,即加载java API的那个加载器。现在可以看出,newInstance()实际上是把new这个方式分解为两步,即首先调用Class加载方法加载某个类,然后实例化。
最后用最简单描述来区分new关键字和newInstance()办法区别:
newInstance: 弱类型低效率只能调用无参构造
new: 强类型相对高效能调用任何public构造