我知道以下是可能的,并且我以前做过很多次:
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 语言指南说:
返回类型仅限于原始类型、字符串、类、枚举、注释和上述类型的数组。
我想要做的显然是创建一个带有注释返回类型的属性,所以理论上应该是可能的,但它看起来并不好。