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

Apex中Static变量与Instance变量的适用场景咨询

Static变量与Instance变量的实用场景指南

先搞懂核心差异

  • Static变量(类变量):属于类本身,所有实例共享同一份数据,内存里只存一次,不用创建实例就能直接访问。
  • Instance变量(实例变量):属于单个实例,每个实例都有独立的副本,必须先创建实例才能使用。

什么时候用Static变量?

  • 全局共享的配置/开关:比如系统维护模式标记、数据库最大连接数这类所有模块都要共用的常量或状态,用Static最方便。
    示例代码:
    public class AppSettings {
        public static boolean isUnderMaintenance = false;
        public static final int DB_MAX_CONNECTIONS = 50;
    }
    
  • 工具类的通用属性:比如日期工具里的默认格式化模板,所有工具方法都用同一个,没必要每个实例存一份。
  • 全局统计数据:比如统计某个类被创建的次数,用Static变量累加,所有实例共享这个计数,不用单独维护。
    示例代码:
    public class Product {
        private static int totalCreated = 0;
        public Product() {
            totalCreated++;
        }
        public static int getTotalProducts() {
            return totalCreated;
        }
    }
    

什么时候用Instance变量?

  • 每个实例独有的属性:比如用户的昵称、邮箱,每个用户的这些数据都不一样,必须每个实例单独存储。
    示例代码:
    public class User {
        private String nickname;
        private String email;
        public User(String nickname, String email) {
            this.nickname = nickname;
            this.email = email;
        }
    }
    
  • 随实例变化的状态:比如订单的支付状态、物流状态,每个订单的状态独立更新,互不干扰。
  • 需要状态隔离的场景:比如多线程环境中,每个线程对应的实例变量不会互相影响,而Static变量如果不加锁很容易出现线程安全问题。

快速判断技巧

  • 先问自己:这个数据是不是所有实例都用同一个值,而且不会随单个实例改变?是就用Static;
  • 如果每个实例需要自己的独立副本,或者数据会跟着实例生命周期变化,那就用Instance变量。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 10:30:54