AspectJ - 如何捕捉子类的构造函数调用?
AspectJ - How to catch constructor call also for subclasses?
我有一个摘要classFoo
.
如果我创建一个将 Foo 扩展到名为 Bar
.
的 Aspect 之外的具体 class 的新实例,我希望出现编译错误
我试过这个:
public pointcut errorcall(): call(Foo.new(..)) && !within(Bar);
declare error: errorcall():"Error: You must use Bar creation methods!";
但它没有捕获 Foo
的子 classes。
如果我将切入点声明为:
public pointcut errorcall(): call(ConcreteFoo.new(..)) && !within(Bar);
它捕获了 Bar 外部的 ConcreteFoo 创建,但我想拦截 Foo 的每个子class。
我该怎么做?
MyClass+
符号也抓取子类。此信息可以在任何 AspectJ 教程中找到,例如here:
public pointcut errorcall():
call(Foo+.new(..)) && !within(Bar);
我有一个摘要classFoo
.
如果我创建一个将 Foo 扩展到名为 Bar
.
我试过这个:
public pointcut errorcall(): call(Foo.new(..)) && !within(Bar);
declare error: errorcall():"Error: You must use Bar creation methods!";
但它没有捕获 Foo
的子 classes。
如果我将切入点声明为:
public pointcut errorcall(): call(ConcreteFoo.new(..)) && !within(Bar);
它捕获了 Bar 外部的 ConcreteFoo 创建,但我想拦截 Foo 的每个子class。
我该怎么做?
MyClass+
符号也抓取子类。此信息可以在任何 AspectJ 教程中找到,例如here:
public pointcut errorcall():
call(Foo+.new(..)) && !within(Bar);