image

编辑人: 未来可期

2024-11-12

0

829

说说newInstance 和 new 有什么区别

分析&回答

创建对象的方式

  • newInstance是实用类的加载机制,创建类是这个类必须已经加载过且已经连接。
  • new是直接创建一个类,创建类是不需要这个类加载过。
    从JVM上理解: newInstance实际上是把new这个方式分解为两步,即,首先调用class的加载方法加载某个类,然后实例化。这样分步的好处是显而易见的。我们可以在调用class的静态加载方法forName时获得更好的灵活性,提供给了我们降耦的手段。

数据类型不同

  • new Instance: 弱类型 (GC是回收对象的限制条件很低,容易被回收)、低效率、只能调用无参构造。
  • new: 强类型(GC不会自动回收,只有所有的指向对象的引用被移除是才会被回收,若对象生命周期已经结束,但引用没有被移除,经常会出现内存溢出)、相对高效、能调用任何public构造。

反思&扩展

什么情况下我们会使用newInstance?

  • 工厂模式经常使用newInstance来创建对象。
  • newInstance()是实现IOC、反射、面对接口编程 和 依赖倒置 等技术方法的必然选择,new 只能实现具体类的实例化,不适合于接口编程。

说说什么是强类型,什么是弱类型?

  • 强类型:为所有变量指定数据类型称为“强类型”。
  • 弱类型:就像javascript  var 可以接受任何类型
  • 强/弱类型是指类型检查的严格程度的。语言有无类型,弱类型和强类型三种。无类型的不检查,甚至不区分指令和数据。弱类型的检查很弱,仅能严格的区分指令和数据。强类型的则严格的在编译期进行检查。

喵呜面试助手: 一站式解决面试问题,你可以搜索微信小程序 [喵呜面试助手] 或关注 [喵呜刷题] -> 面试助手 免费刷题。如有好的面试知识或技巧期待您的共享!

创作类型:
原创

本文链接:说说newInstance 和 new 有什么区别

版权声明:本站点所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明文章出处。
分享文章