拦截方法调用
我有这个代码
Foo foo = new Foo(); foo.callTheMethod();
有没有什么方法可以拦截Foo.callTheMethod()
调用而无需子类化或修改Foo
类,并且没有Foo
工厂?
编辑:抱歉忘了提到这是在Android平台上。
您是否考虑过面向方面编程和AspectJ ? 有关AspectJ / Android信息,请参阅此处和此处 。
使用Java的Proxy
类。 它反而创建了接口和截取方法的动态实现。
这是一个教程 。
看看Spring AOP吧 。 你不必手动对你的类进行子类化 – 但是Spring将在幕后生成它们并添加代码来进行拦截。
是的,通过AspectJ是可能的。 我将用一些代码片段解释它:
public Aspect { Object around()call(* Foo.callTheMethod()) { // do your work return proceed(); } }