2013-06-01 49 views
1

我想在創建任何類通知。Java:創建* any *類時的監聽器?

例如,我想建立像下面的僞代碼監聽器:

addListener("onAnyClassCreated", myCallback); 

public void function myCallback(Object obj) 
{ 
    trace("obj was just created:" + obj.toString()); 
} 

,然後JVM爲我的應用程序創建的任何類,上面的「myCallBack函數」功能會調用。我可以爲自己的代碼管理這個,但我希望它可以與我使用的任何第三方庫一起工作。

+0

你爲什麼要這樣做? –

+2

你的myCallback函數中創建的對象怎麼樣?我至少可以看到兩個。你將如何避免無限遞歸?有什麼理由不使用探查器來做到這一點? –

+0

你的請求很奇怪,但我想你可以用面向方面的編程來做到這一點。 –

回答

1

您可能需要使用分析計數某一類的實例,或者,如果你真的想這樣做你所描述的東西,它可以使用一些儀器儀表工具來完成。例如Byteman

+1

The監聽器必須避免再次創建調用監聽器的對象。 ;) –

+0

使用Byteman實際上並不需要修改現有的代碼,而且您也無法對儀器工具本身進行測量。因此,如上所述,不存在無限遞歸的風險。查看本指南瞭解更多信息http://downloads.jboss.org/byteman/2.1.2/ProgrammersGuideSinglePage.html –

0

我想你想實現可以通過遠程監控您的JVM做什麼。一個經典的方法是使用Java Management Extensions (JMX)

您可以使用現有的JMX客戶端,如JConsoleVisualVM。如果您有特定的需求,您也可以自行創建。