抽象アスペクトを extends して派生アスペクトを定義し、両方で同じ pointcut に advice したらどうなるか。以下のようなコードで試してみた。
package p3;
public class App {
public static void main(String[] args) {
new Foo().foo();
}
}
class Foo {
void foo() { System.out.println("foo"); }
}
abstract aspect AspectX {
abstract pointcut p();
before(): p() {System.out.println("before x.p");}
after(): p() {System.out.println("after x.p");}
}
aspect AspectY extends AspectX {
pointcut p() : execution(void p3.Foo.foo());
before(): p() {System.out.println("before y.p");}
after(): p() {System.out.println("after y.p");}
}
こんな出力になった(色分けは分かりやすくするため)。規定クラスが内側になるらしい。
before y.p |
before x.p |
foo |
after x.p |
after y.p |
0 件のコメント:
コメントを投稿