[英]How to get the instance of class
我在同一包中制作了三个类classA,classB和classC。 现在,我在classB中创建了三个classA对象,在classC中创建了两个classA对象。 现在我该如何在classA中进行跟踪。
1)classB和classC使用了多少个classA对象? 2)如何获取classB和classC中classA对象的名称和引用?
对于实例总数,类A中可以有一个静态变量。静态变量是基于类本身而不是实例的变量,其定义如下:
private static int totalInstances = 0;
然后,在类A的构造函数中,您只需增加该变量,然后在析构函数中将其减小。
然后,您可以为此变量创建访问器
public int getTotalInstances(){
return totalInstances;
}
然后,您将能够获得实例的总数,如下所示:
classA.getTotalInstances()
确保将其设置为类名而不是实例名。
如果您想跟踪参考变量,则可以创建一个参考变量的静态数组,并在每次创建对象时都以与增加实例总数相同的方式添加参考:)
除非您为每个A对象的所有者提供对“所有者”的引用,否则不能这样做。
如果您那样做:
public class B {
private a1 = new A();
private a2 = new A();
private a3 = new A();
}
public class C {
private a1 = new A();
private a2 = new A();
}
,则可以使用反射API查找类型A的类成员,并计算该类型的所有非空成员,并反映A
实例以获取对象名称 (假设您有一种A#getName()
方法)。
如果您这样做(仅针对B代码):
public class B {
public B() {
new A();
new A();
new A();
}
}
,就没有机会“看一下B实例”并告诉您已经创建了多少个A。 唯一的办法就是像Dominic建议的那样对A类乐器进行演奏。 但是它不会告诉您,存在多少个A,到现在为止已经创建了多少个A。
如果需要更多详细信息,请使用许多探查器之一。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.