代码之家  ›  专栏  ›  技术社区  ›  gMale

AspectJ:如何替换现有注释

  •  1
  • gMale  · 技术社区  · 15 年前

    使用AspectJ,如何替换现有的注释?

    declare @method : @Test * *(..) : @Test(timeout=10);
    

    在每个测试方法上产生以下错误:

    ... already has an annotation of type org.junit.Test, cannot add a second
    instance [Xlint:elementAlreadyAnnotated]
    

    当然,这个错误是有意义的,但是语法是什么呢 @Test 所有方法的注释。然后换成 @Test(timeout=10) "

    2 回复  |  直到 15 年前
        1
  •  4
  •   Andy Clement    15 年前

    我是AspectJ项目负责人。低于 https://bugs.eclipse.org/bugs/show_bug.cgi?id=313026 我们正在研究如何使用declare注释:

    • 扩充现有注释(向已经存在的注释添加值)
    • 替换它们

    我们还将研究一种删除注释的形式:

    声明@remove_from_method:int mymethod():@ToBeRemoved;

    但你还不能。。。

        2
  •  1
  •   Sean Patrick Floyd    15 年前

    我怀疑你能用AspectJ做到这一点。至少在当前版本的 AspectJ in Action .

    你所做的 可以 Runner 类(与 @RunWith 注释,您可以再次将其与方面一起注入),它使您的自定义注释优先于 @Test 注解。