繁体   English   中英

Java注释可以扩展/解析为许多注释?

[英]Java annotation that expands/resolves to many annotations?

我有一组我经常使用的Java注释,如下所示:

@SomeAnnotation(Something)
@SomeOtherAnnotation
@SomeLastAnnotation(SomethingElse)
class Foo
{
    /* ... */
}

因为我经常将所有这些注释一起使用,并且可能不得不在偶尔使用它们的任何地方添加它们,所以我想创建一个可以代替使用的新注释。 然后,该注释应“解析”为我在某处定义的所有注释。

@MySuperAnnotation
class Foo
{
    /* ... */
}

我如何声明@MySuperAnnotation使其对所有其他注释“解析”?

一般来说,没有办法。 但是,如果您使用spring(> = 3.0),则可以使用自定义注释。 这里简单的例子。

您可以使用带有声明注释指令的AspectJ进行此操作: http : //www.eclipse.org/aspectj/doc/released/adk15notebook/annotations-declare.html

在您的上下文中,这应该起作用:

public aspect Declaration {
    declare @type: @MySuperAnnotation *: @SomeAnnotation(Something);
    declare @type: @MySuperAnnotation *: @SomeOtherAnnotation;
    declare @type: @MySuperAnnotation *: @SomeLastAnnotation(SomethingElse);
}

您不能做到这一点,除非不重写所有寻找原始注释的工具和反射代码。

(或者,如Oliver所建议的那样,您可以对已编译的.class文件进行后处理,以使用不同的内容替换注释-据我所知,没有任何工具可以自动为您执行此操作)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM