如何查找哪个父对象创建了一个子对象

时间:2012-12-14 08:52:00

标签: java java-ee cdi tapestry

我有一个由几个不同的类调用的经理。管理器通过Inject进行实例化。所以当我调试时,我需要知道谁实例化这个经理?有没有办法做到这一点?

2 个答案:

答案 0 :(得分:2)

除非调用者将自己传递给创建管理器的方法,然后将其传递给管理器的构造函数,然后将其存储在私有变量中。当您没有明确地跟踪此信息时,它将会丢失。

或者,您也可以在管理器的构造函数中设置调试断点,并在命中断点时检查调用堆栈以找出它的调用位置。

答案 1 :(得分:0)

找出哪个对象实例化管理器的一种方法是在管理器的构造函数中创建堆栈跟踪。使用Thread.currentThread()。getStackTrace()获取StackTraceElements数组。

调试时,只需检查这个StackTraceElements数组,看看哪个对象创建了管理器。