拦截方法调用

时间:2012-09-11 14:35:11

标签: java android reflection

我有这段代码

Foo foo = new Foo();
foo.callTheMethod();

有没有办法可以在没有继承或修改Foo.callTheMethod()类且没有Foo工厂的情况下拦截Foo调用?

编辑:抱歉忘记提及这是在Android平台上。

4 个答案:

答案 0 :(得分:23)

使用Java的Proxy类。它反而创建了接口和截取方法的动态实现。

这是tutorial

答案 1 :(得分:11)

您是否考虑过aspect-oriented-programmingAspectJ?有关AspectJ / Android信息,请参阅herehere

答案 2 :(得分:4)

看看Spring AOP。你不必手动对你的类进行子类化 - 但是Spring将在幕后生成它们并添加代码来进行拦截。

答案 3 :(得分:3)

是的,AspectJ是可能的。我将用一些代码片段来解释它:

public Aspect
{
    Object around()call(* Foo.callTheMethod())
    {
        // do your work
        return proceed(); 
    }                       
}