2

由于我不太确定分叉 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 对象。虽然我知道反射可以按照这些方式做事,但我不确定如何从这个特定的方法中获取这个特定的对象。我使用反射来访问某些字段(first、last、count),但这似乎有点不同。

它是GroupResponse类,它似乎将所有东西放在一起。

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

4

2 回答 2

5

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

另一种选择是获取库的源代码,进行一些修改以满足您的需要,然后重新编译。

于 2013-02-22T23:28:08.927 回答
1

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

于 2013-02-22T23:34:01.527 回答