Java 8可重复注释模拟以前的版本

时间:2015-09-24 07:10:12

标签: java annotations java-8

如果你想重复注释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中的外观如何?

1 个答案:

答案 0 :(得分:6)

在Java 8之前,需要明确地包装注释,如下例所示:

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

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