JDK8新特性之重复注解


什么是重复注解

下面是JDK8中的重复注解( java.lang.annotation.Repeatable)定义的源码。
  1. @Documented
  2. @Retention(RetentionPolicy.RUNTIME)
  3. @Target(ElementType.ANNOTATION_TYPE)
  4. public@interfaceRepeatable{
  5.    Class<?extendsAnnotation> value();
  6. }
重复注解,即一个注解可以在一个类、方法或者字段上同时使用多次,如Spring中可以使用多个扫描组件来扫描多个包的注解。
  1. @ComponentScan
  2. @ComponentScan
  3. publicclassConfiguration{
  4. }
ComponentScan
  1. @Retention(RetentionPolicy.RUNTIME)
  2. @Target(ElementType.TYPE)
  3. @Documented
  4. @Repeatable(ComponentScans.class)
  5. public@interfaceComponentScan{
ComponentScans
  1. @Retention(RetentionPolicy.RUNTIME)
  2. @Target(ElementType.TYPE)
  3. @Documented
  4. @Repeatable(ComponentScans.class)
  5. public@interfaceComponentScan{
  6. ...

重复注解实现

下面来演示下重复注解的实现。
  1. publicstaticvoid main(String[] args){
  2.    for(Token token :UserToken.class.getAnnotationsByType(Token.class)){
  3.        System.out.println(token.value());
  4.    }
  5. }
  6. @Target(ElementType.TYPE)
  7. @Retention(RetentionPolicy.RUNTIME)
  8. public@interfaceTokens{
  9.    Token[] value();
  10. }
  11. @Target(ElementType.TYPE)
  12. @Retention(RetentionPolicy.RUNTIME)
  13. @Repeatable(Tokens.class)
  14. public@interfaceToken{
  15.    String value();
  16. }
  17. @Token("666666")
  18. @Token("888888")
  19. publicinterfaceUserToken{
  20. }
输出结果:
  1. 666666
  2. 888888

本站所有文章均来自互联网,如有侵权,请联系站长删除。极客文库 » JDK8新特性之重复注解
分享到:
赞(0)

评论抢沙发

评论前必须登录!