有没有办法知道类的实例调用其成员方法的次数。
我认为(不确定),一种方法是为方法设置一个专用的成员变量,但如果我们有这么多方法,这将是不可行的。
例如:
class A{
public void someMethod(){
}
}
我有一个实例说
A a = new A();
所以我想知道a
在程序中调用someMethod
的次数。
我们可以有许多方法。
答案 0 :(得分:5)
如果您需要在程序中使用此信息,这正是面向方面编程的目的。使用AspectJ,这将非常容易。 Spring AOP可能也会有用。
答案 1 :(得分:4)
您可以采取一些方法,具体取决于您可以轻松修改代码:
答案 2 :(得分:4)
事实上,AOP在这里是正确的工具,我会写一些方面来使用JAMon(可以精确地收集statistics such as hits, time statistics (avg,total,min,max), concurrency statistics and more)。请参阅this previous答案以获取示例(或稍微说一下)。如果您使用的是Spring,那么Spring可以使用JamonPerformanceMonitorInterceptor
。
答案 3 :(得分:2)
您可以考虑使用分析器,例如一个来自NetBeans或YourKit等。
答案 4 :(得分:1)
有很多Open Source Java Profilers。
分析器执行动态程序分析(与静态代码分析相反),并显示程序的行为,在程序执行时收集信息。其中一些分析器显示方法调用统计信息。
答案 5 :(得分:1)
答案 6 :(得分:1)
可以使用java.lang.reflect.Proxy类。在Horstmann的书“核心Java”中。第I卷'详细描述了这种技术。