为了账号安全,请及时绑定邮箱和手机立即绑定

JAVA:获取计数,在其他类中调用一个类的次数

JAVA:获取计数,在其他类中调用一个类的次数

万千封印 2022-06-15 15:31:25
假设我有一个 demo.java 类和其他类,如 A.java 、 B. Java 等。我想在 Demo.java 中编写一些代码来获取 count ,这将告诉 Demo.java 有多少类被调用。任何建议都会有所帮助。提前致谢!
查看完整描述

3 回答

?
浮云间

TA贡献1829条经验 获得超4个赞

在类中创建一个静态变量。

public static int callerCounter=0;.


然后在每个构造函数中递增它。例如:-


Demo()

{

callerCounter++; // Add this line in every Constructor

}

callerCounter并在您想要获得计数器值的地方打印。


查看完整回答
反对 回复 2022-06-15
?
慕莱坞森

TA贡献1810条经验 获得超4个赞

创建一个静态 Set callerClasses 来保存调用 Demo 类的每个类的名称。


然后,在每次调用 Demo 类时,将调用者姓名添加到集合中。


在任何时候,您都可以通过检查 Set 大小来检查有多少不同的类调用了您的 Demo 类。


编辑注释#1:


在我发布我的答案后,这个问题就很清楚了,即意图不是计算方法调用而是计算创建的实例。


无论如何我都会保留它,因为这可能是其他人的情况。


编辑注#2:


为完整性添加了代码示例。


  public class Demo {


  // ConcurrentSkipListSet for thread safety

  private static Set<String> callerCount = new ConcurrentSkipListSet<>();


  public void methodA() {

    String className = new Exception().getStackTrace()[1].getClassName();

    recordCaller(className);

  }


  public long getNumberOfCallers() {

    return callerCount.size();

  }


  private void recordCaller(final String className) {

    callerCount.add(className);

  }

}


查看完整回答
反对 回复 2022-06-15
?
饮歌长啸

TA贡献1951条经验 获得超3个赞

我认为在一般情况下仅通过分析代码是不可行的。如果接口正在使用中,知道在接口后面将实例化哪个类可能并非易事。这可能取决于某些工厂内的决定,并且可能会受到仅在运行时可用的输入的影响,甚至在理论上受 SecureRandom 的影响。

您始终可以放置计数器或仅记录语句(单独处理日志输出)以在运行时收集此类统计信息。JProfiler 之类的工具可以作为无需编程的替代工具。


查看完整回答
反对 回复 2022-06-15
  • 3 回答
  • 0 关注
  • 346 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号