是否可以使用可以是任何注释的属性创建Java注释?

时间:2013-06-09 02:51:11

标签: java annotations return-type

我知道以下是可能的,之前我已经做过很多次了:

public @interface Foo { }

public @interface Bar
{
    Foo[] foos() default {};
}

...

@Bar(foos={@Foo, @Foo})
void doSomething();

但是,我希望有一个注释属性,其返回类型是任何注释,而不仅仅是foo。例如:

public @interface Foo1 { }

public @interface Foo2 { }

public @interface Bar
{
    Annotation[] annotations() default {};
}

...

@Bar(annotations={@Foo1, @Foo2})
void doSomething();

这可能吗?我找不到办法,但我希望我能忽略一些东西。 Java language guide for annotations说:

  

返回类型仅限于基元,字符串,类,枚举,注释和前面类型的数组。

我想要做的是显然创建一个带有返回类型注释的属性,所以理论上应该是可能的,但它看起来不太好。

1 个答案:

答案 0 :(得分:1)

不,这是不可能的。注释不是注释,而是一个类。除了String和Class之外,您不能返回类。