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
相关产品推荐
相关产品推荐

