Java 8 Repeatable注解的使用

Java 8 Repeatable注解的使用

Java 8之前,同一注解不能在相同的目标元素上多次使用,例如,如下的注解在Java 8之前是不允许的:
public  class SampleClass {
    
    @Quality("Security")
    @Quality("Performance")
    @Quality("Readability")
     public  void foo(){
         //
    }
}

Java 8引入了Repeatable注解(@Repeatable)可以解决这一问题,但光有可重复的注解定义还不够,还需要它的容器注解,两者一起来实现可重复注解的使用。实例如下:
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.SOURCE)
@Repeatable (Qualities. class)
public @ interface Quality {
    String value();
}
@Target(ElementType.METHOD)
public @ interface Qualities {
    Quality[] value();
}

其中,Quality是可重复注解,由@Repeatable注解标明,它的容器注解是Qualities,用于存放所有可重复的Quality(存贮在Quality[]中);同时还要注意可重复注解和它的容器注解的目标元素必须是一样的(这也不言自明)。如此这般,我们最开始的  SampleClass 在Java 8环境下就可以安全使用了。


你可能感兴趣的:(Java 8 Repeatable注解的使用)