Java中可用static变量配合构造方法统计类实例化次数:定义private static int变量并在每个构造器中递增,通过静态方法获取总数;多线程下应使用AtomicInteger或synchronized保证线程安全。
在Java中,可以用
变量配合构造方法,轻松统计一个类被实例化(即调用构造器)的总次数。
原理:static变量属于类,所有实例共享
修饰的变量在类加载时初始化,且只有一份,不随对象创建而重复生成。每次调用构造方法时,对这个静态计数器加1,就能准确记录实例化次数。
基础实现方式
在类中定义一个
变量,并在每个构造方法里递增它:
无论使用哪个构造器,只要成功创建对象,计数就+1
子类继承该类时,
不会自动计入父类的static计数器
(除非子类构造器也显式调用父类构造并触发计数逻辑)
注意:反序列化、反射(
)、或某些框架绕过构造器创建对象的情况,
不会触发计数
线程安全考虑(多线程环境)
如果多个线程可能并发创建该类实例,需避免计数丢失:
Eclipse导入Android或其他的JAVA项目的正确方法 WORD版
本文档主要讲述的是Eclipse导入Android或其他的JAVA项目的正确方法;希望本文档会给有需要的朋友带来帮助;感兴趣的朋友可以过来看看
下载
立即学习
“
Java免费学习笔记(深入)
”;
用
替代
最简单可靠
或用
块包裹自增操作(稍重,但语义清晰)
验证与使用示例
写个简单测试确认效果:
静态计数器在类首次加载时初始化,即使没创建对象也为0(初始值可设为0或其它)
可通过
随时查看当前总实例数,适合调试、监控或资源限制场景
staticstaticprivate static int
public class Counter {
private static int instanceCount = 0;
public Counter() {
instanceCount++;
}
public Counter(String name) {
instanceCount++;
}
// 提供静态方法获取当前总数
public static int getInstanceCount() {
return instanceCount;
}
}
Constructor.newInstance()AtomicIntegerintsynchronized
public class SafeCounter {
private static final AtomicInteger instanceCount = new AtomicInteger(0);
public SafeCounter() {
instanceCount.incrementAndGet();
}
public static int getInstanceCount() {
return instanceCount.get();
}
}
public class Test {
public static void main(String[] args) {
System.out.println(Counter.getInstanceCount()); // 输出 0
new Counter();
new Counter("test");
new Counter();
System.out.println(Counter.getInstanceCount()); // 输出 3
}
}
getInstanceCount()