1. 定义新的Annotation类型使用@interface关键字
  2. 自定义注解自动继承了java.lang.annotation.Annotation接口
  3. Annotation的成员变量在Annotation定义中已无参方法的形式来声明 其中方法名和返回值定义了该成员的名字和类型 我们称为配置参数 类型只能是八种基本数据类型、String、Class、enum、Annotation以上的所有类型的数组
    1. 方法名称 约等于成员变量名称
    2. 返回值 约等于成员变量类型
  4. 可以在定义Annotation的成员变量时为其指定初始值 指定成员变量的初始值使用defalut关键字
  5. 如果只有一个参数成员 建议使用value为参数名称
  6. 如果定义的注解含有配置参数 那么使用时必须指定参数值 除非它有默认值 格式时 参数名 = 参数值 如果他只有一个参数成员 且名称为value 可以省略 value=
  7. 没有成员定义的Annotation称为标记 包含成员变量的Annotation称为元数据Annotation

一、Jdk5.0提供的四个元注解以及Jdk8.0中的新特性

  1. @Retention 修饰当前注解的生命周期
  2. @Target 指定当前注解的修饰范围
  3. @Documented 被修饰的注解可以被javadoc生成
  4. @Inherited 被修饰的注解如果存在子类 那么子类默认继承当前注解
  5. JDK8新特性

    1. 可重复注解 关键字@Repeatable
    2. 类型注解

      二、自定义注解

      ```java /**
    • 自定义注解
    • @author LYY
    • @Retention 指定注解生命周期
    • @Target 指定注解作用范围 */ @Inherited @Documented @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.TYPE) public @interface MyAnnotation {

      /**

      • 只有一个成员变量 使用建议名称 value 指定默认值为 哈哈
      • @return */ String value() default “哈哈”;

}

```