因为我not quite sure what's involved with forking 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上吗?我不确定什么是可行或可取的。
答案 0 :(得分:5)
您不能使用反射来修改方法的内容。您不能使用字节码操作库来修改方法的内容。但是,通过字节代码操作,您可以拦截方法调用并重定向到您选择的另一个方法。这就像你要离开的那样近了。
另一种选择是获取库的来源,进行一些修改以满足您的需求,并重新编译。
答案 1 :(得分:1)
查看Byteman。使用它,您可以描述一个规则,即只要调用受影响类的方法getMessage()
,就会调用您自己的代码。