Вызов метода перехвата

У меня есть этот код

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

Можно ли перехватить вызов Foo.callTheMethod() без подкласса или модификации класса Foo и без наличия Foo factory?

EDIT: извините, забыл упомянуть об этом на платформе Android.

Ответ 2

Использовать класс Java Proxy. Он создает динамические реализации интерфейсов и перехватывает методы, все они отражаются.

Здесь учебник.

Ответ 3

Посмотрите Spring AOP. Вам не нужно подклассифицировать свой класс вручную, но Spring сгенерирует их за кулисами и добавит код для перехвата.

Ответ 4

Да, это возможно через AspectJ. Я объясню это с помощью некоторого фрагмента кода:

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