Ответ 1
Рассматривали ли вы аспектно-ориентированное программирование и, возможно, AspectJ? См. здесь и здесь для информации AspectJ/Android.
У меня есть этот код
Foo foo = new Foo();
foo.callTheMethod();
Можно ли перехватить вызов Foo.callTheMethod()
без подкласса или модификации класса Foo
и без наличия Foo
factory?
EDIT: извините, забыл упомянуть об этом на платформе Android.
Рассматривали ли вы аспектно-ориентированное программирование и, возможно, AspectJ? См. здесь и здесь для информации AspectJ/Android.
Использовать класс Java Proxy
. Он создает динамические реализации интерфейсов и перехватывает методы, все они отражаются.
Здесь учебник.
Посмотрите Spring AOP. Вам не нужно подклассифицировать свой класс вручную, но Spring сгенерирует их за кулисами и добавит код для перехвата.
Да, это возможно через AspectJ. Я объясню это с помощью некоторого фрагмента кода:
public Aspect
{
Object around()call(* Foo.callTheMethod())
{
// do your work
return proceed();
}
}