有什麼辦法可以知道某個類的實例調用了其成員方法的次數。如何知道在java中調用特定方法的次數
我認爲(不確定),一種方法是爲方法有一個專用的成員變量,但如果我們有這麼多的方法,這將是不可行的。
例如:
class A{
public void someMethod(){
}
}
和我有一個實例說
A a = new A();
所以我想知道的時候a
數在程序中援引someMethod
。 我們可以有任何數量的方法。
有什麼辦法可以知道某個類的實例調用了其成員方法的次數。如何知道在java中調用特定方法的次數
我認爲(不確定),一種方法是爲方法有一個專用的成員變量,但如果我們有這麼多的方法,這將是不可行的。
例如:
class A{
public void someMethod(){
}
}
和我有一個實例說
A a = new A();
所以我想知道的時候a
數在程序中援引someMethod
。 我們可以有任何數量的方法。
如果您在程序內部需要此信息,這正是面向方面編程的意義所在。使用AspectJ,這將是非常容易的。 Spring AOP可能也會起作用。
如果spring AOP方法調用它的內部方法或者可能性,該怎麼辦? – newbie 2011-01-24 13:31:22
有你可以採取一些方法,這取決於你如何輕鬆地修改代碼:
還有很多Open Source Java Profilers。
分析器執行動態程序分析(與靜態代碼分析相反),並顯示程序的行爲,在程序執行時收集信息。其中一些分析器顯示方法調用統計信息。
事實上,AOP在這裏是合適的工具,我會寫一點方面使用JAMon(它可以精確地收集statistics such as hits, time statistics (avg,total,min,max), concurrency statistics and more)。有關示例,請參閱this previous回答(或者goolge)。如果你使用的是Spring,那麼Spring就可以使用JamonPerformanceMonitorInterceptor
。
它可能與java.lang.reflect.Proxy類有關。在Horstmann的書「Core Java」中。第一卷'這一技術在詳細描述中。
嘿gurukulki,每次發佈代碼片段時,格式都很差,幾乎沒有一個實際編譯。請注意這一點:) Intenting要用4個空格完成,'Class'要寫成'class'。 – BalusC 2010-01-25 12:56:10
對不起BalusC。這只是我正在尋找的一個例子。沒有編譯。我將來會照顧它。謝謝 – GuruKulki 2010-01-25 12:58:50
BalusC:爲什麼意向是用4個空格完成的?我使用tab來識別。是否有正當理由鍵入鍵盤4倍而不是1倍? – newbie 2011-01-24 13:21:47