3

我知道以下是可能的,并且我以前做过很多次:

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 语言指南说:

返回类型仅限于原始类型、字符串、类、枚举、注释和上述类型的数组。

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

4

1 回答 1

1

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

于 2013-06-09T03:18:36.590 回答