new和newInstance小结

在学习java的反射机制的时候,首先会通过Class.forName() 获取字节码对象,然后再用这个对象调用newInstance()方法,创建这个类的对象,再通过对象去操作相应的字段;
在这里小结一下new和newInstance的区别:
使用newInstance有两个前提:
1.这个类已经加载;
2.这个类已经连接了。
newInstance()实际上是把new这个方式分解为两步,即首先调用Class加载方法加载某个类,然后实例化。

这样分步的好处是显而易见的。我们可以在调用class的静态加载方法forName时获得更好的灵活性,提供给了一种降耦(降低耦合度)的手段。

最后用最简单的描述来区分new关键字和newInstance()方法的区别:

  • newInstance: 弱类型。低效率。只能调用无参构造。

  • new: 强类型。相对高效。能调用任何public构造。

你可能感兴趣的:(基础笔记)