2012-12-14 49 views
1

我有一個被幾個不同的類調用的管理器。經理通過Inject實例化。所以當我調試時,我需要知道誰實例化這個管理器?有沒有辦法做到這一點?如何找到哪個父對象創建了一個子對象

+1

如果它被注入,那麼容器(即Spring,CDI或Guice,取決於你使用的DI框架)是實例化它的一個。 –

回答

2

除非調用者將自己傳遞給創建管理器的方法,然後傳遞給管理器的構造函數,然後將其存儲在私有變量中。當你不明確地跟蹤這些信息時,它會丟失。

或者,您也可以在管理器的構造函數中設置一個調試斷點,並在命中斷點時檢查調用堆棧以找出調用堆棧的位置。

0

找出哪個對象實例化您的管理器的一種方法是在管理器的構造函數中創建堆棧跟蹤。使用Thread.currentThread()。getStackTrace()來獲取一個StackTraceElements數組。

調試時,只需檢查此StackTraceElements數組以查看哪個對象創建了管理器。