我有一个抽象类Foo
。
如果我创建一个在名为Bar
的Aspect之外扩展Foo的具体类的新实例,我想要编译错误。
我试过了:
public pointcut errorcall(): call(Foo.new(..)) && !within(Bar);
declare error: errorcall():"Error: You must use Bar creation methods!";
但它没有捕获Foo
的子类。
如果我将切入点声明为:
public pointcut errorcall(): call(ConcreteFoo.new(..)) && !within(Bar);
它捕获了Bar之外的ConcreteFoo创建,但是我想拦截Foo的每个子类。
我该怎么做?
答案 0 :(得分:0)
MyClass+
表示法还会抓取子类。这些信息可以在任何AspectJ教程中找到,例如here:
public pointcut errorcall():
call(Foo+.new(..)) && !within(Bar);