A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Synaric 中级黑马   /  2015-10-10 12:38  /  169 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文


  1. import java.lang.annotation.ElementType;
  2. import java.lang.annotation.Retention;
  3. import java.lang.annotation.RetentionPolicy;
  4. import java.lang.annotation.Target;

  5. @Retention(RetentionPolicy.RUNTIME)
  6. @Target(ElementType.TYPE)
  7. public @interface MyAnnotation {
  8.         String value() default "myannotation.value";
  9. }
复制代码



  1. import java.lang.annotation.ElementType;
  2. import java.lang.annotation.Retention;
  3. import java.lang.annotation.RetentionPolicy;
  4. import java.lang.annotation.Target;
  5. import com.synaric.enumeration.*;


  6. //表明该注解保留到内存(运行时)
  7. @Retention(RetentionPolicy.RUNTIME)
  8. //表明该注解可以运用到Type中
  9. //Type包括Class、Interface、Enum
  10. @Target(ElementType.TYPE)
  11. public @interface InfoAnnotation {
  12.         //包含各种各样类型的注解
  13.         String message() default "my info";
  14.        
  15.         int cid() default 0;
  16.        
  17.         int[] arr() default {1, 2, 3};
  18.        
  19.         Color color() default Color.BLACK;
  20.        
  21.         MyAnnotation annotation() default @MyAnnotation();
  22.        
  23.         Class<?> myclass() default AnnotataionDemo_2.class;
  24.        
  25.         String value();
  26. }
复制代码


  1. import java.util.Arrays;

  2. //@InfoAnnotation("my value")        ok
  3. //@InfoAnnotation(message="my message",value="my value")        ok
  4. //有默认值的属性可以不设置值
  5. //如果只需要设置value属性,不需要写成@InfoAnnotation(value="my value")
  6. @InfoAnnotation("my value")
  7. public class AnnotataionDemo_2 {
  8.         public static void main(String[] args) {
  9.                 //检查该类是否运用了注解
  10.                 if(AnnotataionDemo_2.class.isAnnotationPresent(InfoAnnotation.class)){
  11.                         //反射获取注解
  12.                         InfoAnnotation infoAnnotation = AnnotataionDemo_2.class.getAnnotation(InfoAnnotation.class);
  13.                        
  14.                         //打印各种类型注解
  15.                         System.out.println(infoAnnotation.message());
  16.                         System.out.println(infoAnnotation.cid());
  17.                         System.out.println(Arrays.toString(infoAnnotation.arr()));
  18.                         System.out.println(infoAnnotation.color());
  19.                         System.out.println(infoAnnotation.annotation());
  20.                         System.out.println(infoAnnotation.myclass());
  21.                         System.out.println(infoAnnotation.value());
  22.                 }
  23.         }
  24. }
复制代码



0 个回复

您需要登录后才可以回帖 登录 | 加入黑马