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构造
本文探讨了newInstance()方法与new关键字的不同之处。newInstance()先确保类已加载并连接,再实例化对象;而new则直接创建对象。此外,newInstance()只能调用无参构造,效率较低且类型较弱。
1万+

被折叠的 条评论
为什么被折叠?



