This question already has answers here:
Multiple annotations of the same type on one element?

(8个答案)


4年前关闭。




如果要重复注释Java 8,则允许这样做。

例:
@Retention(RetentionPolicy.RUNTIME)
@Repeatable(MyAnnotationContainer.class)
@interface MyAnnotation {

    String value();

}

@Retention(RetentionPolicy.RUNTIME)
@interface MyAnnotationContainer {

    MyAnnotation[] value();
}

@MyAnnotation( "a")
@MyAnnotation( "b")
class MyClass {
}

在描述中,我已经读过,这只是java编译器生成代码的提示。

请说明该代码在Java 5-7中的外观如何?

最佳答案

在Java 8之前,需要像下面的示例一样显式地包装注释:

@MyAnnotationContainer({
  @MyAnnotation("a"),
  @MyAnnotation("b")
})
class MyClass {
}

这也是通过反射API在运行时公开批注的方式。 Java 8仅为此显式包装添加了一些syntactic suggar,因为这是一个常见的用例。

10-02 01:54