拦截方法调用

我有这个代码

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(); } }