繁体   English   中英

如何获取类的实例

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM