黑马程序员技术交流社区

标题: 注解的使用 [打印本页]

作者: Synaric    时间: 2015-10-10 12:38
标题: 注解的使用

  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. }
复制代码








欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2