[英]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.