我遇到了一種情況,其中我想知道/獲取對某個方法被調用的對象的引用。調用方法的對象 - Java反射
基本上,我想寫一個xposed模塊。該模塊的功能之一是通過HTTP查找應用程序所訪問的所有URL。爲了達到這個目的,我的做法是:
我假設任何應用程序(或者至少是有問題的應用程序)都會調用openConnection()來建立HTTP連接。 因此,在應用程序運行時期間掛接openConnection()方法,並嘗試找出調用方法的對象。 一旦檢索到對象,找出在對象實例化時傳遞給它的字符串。 該字符串對象將是應用程序想要建立HTTP連接的URL。
現在我希望是否有一種方法可以幫助我實現上面的java反射 - 找出對象引用,然後在實例化對象時傳遞給它的字符串。
示例 - 從Android世界:
URL url = new URL(myurl);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
現在我想知道是否有知道「網址」是在其上的openConnection()被調用對象的方法。最終目標是我希望能夠在創建對象時獲取傳遞給URL的字符串'myurl'。
有沒有一種方法可以做到這一點?
我曾經使用過此已經走了: How do I find the caller of a method using stacktrace or reflection?
但是,上面並沒有證明在我的情況非常有幫助。而且,在上面有一些評論提到,即使我使用StackTraceElement,我也不會獲得對象的名稱/引用。我只想得到調用者的類型。並且單獨調用,我認爲我不能實現尋找'url'字符串的最終目標。我會嗎?
其他可以調用'openConnection'的實例? –
@AndyTurner我明白你的觀點。但是,我想有一個對象本身的引用,所以我可以檢索URL對象實例化期間傳遞的字符串。 – qre0ct
我認爲你需要澄清你的問題。我相應地刪除了我的答案。 – Tunaki