You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java开发中类对象应在构造方法中创建还是在使用它的方法中创建

两种实现方式没有绝对优劣,需要根据你的实际业务场景选择,二者的差异和适用场景如下:

第一种:构造方法中创建View实例

代码示例:

public class Logic {
  private View view;
     public Logic() {
        view = new View(); // 注意原写法此处冒号需改为分号
     }
     public void someMethod(String string){
        view.print(string);
     }
}

适用场景

  • someMethod 调用频率较高
  • 需要全局复用同一个View实例,统一配置View的行为
  • 后续有依赖注入、替换View实现类的需求

优势

  • 全局仅持有一个View实例,避免频繁创建销毁对象的性能开销,降低GC压力
  • View的配置统一在构造方法中完成,维护成本低
  • 代码结构更符合依赖倒置原则,扩展性更强

劣势

  • 若Logic实例创建后从未调用someMethod,会造成不必要的内存占用
  • View实例的创建成本较高时,会拖慢Logic实例的初始化速度

第二种:方法内部创建View实例

代码示例:

public class Logic {
         public Logic() {
         }
         public void someMethod(String string){
            View view = new View();
            view.print(string);
         }
    }

适用场景

  • someMethod 调用频率极低,甚至大部分场景下不会被触发
  • 每次调用someMethod需要使用独立的View实例,不同调用之间的View配置互不干扰

优势

  • 实现懒加载,只有真正用到View的时候才会占用内存,资源利用率更高
  • 不同调用的View实例完全隔离,灵活度更高

劣势

  • 高频调用时会产生大量临时对象,增加GC负担,性能更差
  • 若需要修改View的初始化配置,需要修改每一处创建View的代码,维护成本高

选择建议

优先选择构造方法创建的方案,除非你明确符合第二种方案的适用场景。

内容的提问来源于stack exchange,提问作者Dmitry Gurinovich

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.19 04:15:04