我遇到了一种情况,其中我想知道/获取对某个方法被调用的对象的引用。调用方法的对象 - 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