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