Java  
 注解( 
 Annotation 
 )又称  
 Java  
 标注,是  
 JDK5.0  
 引入的一种注释机制。 
 
 
 Java  
 语言中的类、 
 构造器、 
 方法、成员变量、参数等都可以被注解进行标注。 
 
 
自定义注解 --- 格式
自定义注解就是自己做一个注解来使用。
public @interface 注解名称{
    
    public 属性类型 属性名() default 默认值;
            //Java支持的数据类型基本上都支持
}//自定义注解
public @interface MyTest1{
    String a();
    boolean b() default true;
    String[] c();
}
//应用
@MyTest1(a = "AA", c = {"CA", "CB"})
public class AnnotationTest1{...}注解的作用
  1. 
 对 
 Java 
 中类、方法、成员变量做标记,然后进行特殊处理 
 ,至于到底做何种处理由业务需求来决定。 
 
 
 2.例如: 
 JUnit 
 框架中,标记了注解 
 @Test 
 的方法就可以被当成测试方法执行,而没有标记的就不能当成测试方法执行。 
 
 
特殊属性
  1. 
 value属性,如果只有一个value属性的情况下 
 , 
 使用value属性的时候可以省略value名称不写!! 
 
  2. 
 但是如果有多个属性,  
 且多个属性没有默认值,那么value 
 名称 
 是不能省略的。 
 
public @interface MyTest2{
    String value01();
}
//应用
@MyTest1("value")
public class AnnotationTest2{...}public @interface MyTest2{
    String value01();
    int age default 20;
}
//应用
@MyTest1("value")
public class AnnotationTest2{...}注解的原理


元注解
 
 元注解:注解注解的注解。 
 
 
元注解有两个:
@Target: 约束自定义注解只能在哪些地方使用
@Target中可使用的值定义在ElementType枚举类中,常用值如下:
 
 TYPE,类,接口 
 
 
 FIELD, 成员变量 
 
 
 METHOD, 成员方法 
 
 
 PARAMETER, 方法参数 
 
 
 CONSTRUCTOR, 构造器 
 
 
 LOCAL_VARIABLE, 局部变量 
 
@Retention:申明注解的生命周期
@Retention中可使用的值定义在RetentionPolicy枚举类中,常用值如下:
 
 SOURCE: 注解只作用在源码阶段,生成的字节码文件中不存在 
 
 
 CLASS:  注解作用在源码阶段,字节码文件阶段,运行阶段不存在,默认值. 
 
 
 RUNTIME:注解作用在源码阶段,字节码文件阶段,运行阶段(开发常用) 
 
 
//          类,接口            成员变量
@Target({ElementType.TYPE, ElementType.METHOD})
//注解作用在源码阶段,字节码文件阶段,运行阶段(开发常用)
@Retention(RetentionPolicy.RUNTIME)
public @interface MyTest3{...}


















