2013-06-01 48 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。如果您有特定的需求,您也可以自行创建。