调用方法的对象-Java反射

qre0ct

我遇到了一种情况,在这种情况下,我想知道/获取对在其上调用了某种方法的对象的引用。

基本上,我正在尝试编写一个xposed模块。该模块的功能之一是找出应用程序通过HTTP命中的所有URL。为此,我的方法是:

我假设任何应用程序(或至少有问题的应用程序)都将调用openConnection()建立HTTP连接。因此,请在应用程序运行时挂接openConnection()方法,并尝试找出调用该方法的对象。检索完对象后,找出在对象实例化时传递给它的字符串。此字符串对象将是应用程序要建立HTTP连接的URL。

现在,我希望是否有一种Java反射可以帮助我实现上述目标的方法-找出对象引用,然后找到实例化对象时传递给它的字符串。

示例-来自Android世界:

URL url = new URL(myurl);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();

现在,我想知道是否有一种方法可以知道'url'是调用openConnection()的对象。最终目标是,我希望能够在创建对象时获取传递给URL的字符串“ myurl”。

有办法吗?

我已经经历了这一点:如何使用stacktrace或反射找到方法的调用者?

但是,在我看来,以上内容并没有帮助。此外,在上面的评论中提到即使我使用StackTraceElement,也不会获得对象的名称/引用。我只会得到调用者的类型。而且,仅凭被调用者,我认为我将无法实现找到“ url”字符串的最终目标。可以吗

4knahs

使用thisObject应该是方法。

作为一个额外的想法,也许考虑使用静态可访问的WeakIdentityHashMap,以便您可以将url对象(param.thisObject)存储为键,并将url字符串存储为值。

过程:1)拦截URL的构造函数以将其注册在Map中2)打开连接以获取其值时检索它。

为什么要使用WeakIdentityHashMap?IdentityHashMap执行引用相等代替对象相等。WeakIdentityHashMap保留对对象的弱引用,这意味着,如果原始应用程序不再引用对象,则仍可以对其进行垃圾回收。

在一些Xposed项目中一直在使用

PS-如果需要线程安全,则将其与Collections.synchronizedMap一起包装

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Java反射调用方法NoSuchMethodException

来自分类Dev

对整数对象的Java反射

来自分类Dev

无法通过Java反射调用方法:NoSuchMethodException

来自分类Dev

Java反射-如何调用getter / setter方法?

来自分类Dev

如何分析反射调用的Java方法

来自分类Dev

使用 Java 反射创建对象

来自分类Dev

如何使用反射调用带有.class(非对象)参数的java中的方法

来自分类Dev

Java反射转换方法ReturnType

来自分类Dev

调用方法后的Java反射,该方法未引发异常

来自分类Dev

如何使用Java反射调用Android Dalvik内部方法?

来自分类Dev

Java:通过功能界面中的反射调用方法

来自分类Dev

Java反射:从超类继承的类中调用GetDeclaredFields()方法

来自分类Dev

在Java中使用反射调用重写的实例方法

来自分类Dev

使用Java反射调用具有通用参数的方法

来自分类Dev

Java 8:使用反射调用接口的静态方法

来自分类Dev

Java:通过功能界面中的反射调用方法

来自分类Dev

使用循环变量和Java反射调用setter方法

来自分类Dev

使用多个变量调用 Java LambdaMetaFactory 方法以避免反射

来自分类Dev

java中如何通过反射调用setter方法

来自分类Dev

Java反射-调用AA日期函数

来自分类Dev

Java反射嵌套方法不修改基础对象

来自分类Dev

了解Java中的对象反射优势

来自分类Dev

对实例化对象执行Java反射

来自分类Dev

使用Java反射实例化对象

来自分类Dev

在实例化对象上执行Java反射

来自分类Dev

如何使用Java反射填充复合对象?

来自分类Dev

Scala反射-Java枚举通用对象

来自分类Dev

如何通过反射在对象上调用方法

来自分类Dev

在Java反射中找不到方法

Related 相关文章

热门标签

归档