使用反射来修改方法并获得对其局部变量的访问权限



由于我不太确定分叉gnu.mail.providers涉及到什么,我希望使用反射来与这个类交互。

我认为getMessage中的算术不正确:

          GroupResponse gr = ns.connection.group(name);
          first = gr.first;
          last = gr.last;
          count = gr.count;
          // Get article
          m = getMessageImpl(msgnum - 1 + first);
          // Cache store
          articleCache.put(key, m);
          return m;

无论如何,我希望在getMessage方法中访问上面的GroupResponse对象。虽然我知道反射可以沿着这些线做事情,但我不知道如何从这个特定的方法中获得这个特定的对象。我已经使用反射来访问一些字段(第一、最后、计数),但这似乎有点不同。

这是一个GroupResponse类,它似乎把所有东西都放在一起。

我可以使用反射来编写一个自定义的getMessage方法并将其"粘贴"到NNTPFolder上吗?我不确定什么是可能的或可取的。

不能使用反射来修改方法的内容。不能使用字节码操作库来修改方法的内容。不过,通过字节码操作,您可以拦截方法调用并重定向到您选择的另一个方法。这几乎是你将要得到的afaik。

另一种选择是获取库的来源,根据需要进行一些修改,然后重新编译。

查看Byteman。使用它,您可以描述一个规则,即无论何时调用受影响类上的方法getMessage(),都将调用您自己的代码。

相关内容

  • 没有找到相关文章