Используя совет around()
, вы можете получить возвращаемое значение перехваченного вызова метода, используя proceed()
. Вы даже можете изменить значение, возвращаемое методом, если хотите.
Например, предположим, у вас есть метод m()
внутри класса MyClass
:
public class MyClass {
int m() {
return 2;
}
}
Предположим, у вас есть следующий аспект в его .aj файле:
public aspect mAspect {
pointcut mexec() : execution(* m(..));
int around() : mexec() {
// use proceed() to do the computation of the original method
int original_return_value = proceed();
// change the return value of m()
return original_return_value * 100;
}
}