[toc]

  1. 自定义注解,和定义接口相同,在interface前添加@符号

    public @interface CherryAnnotation {
    }
  2. 注解限制

    1. @Target 限制注解在哪些Java元素上可以使用。

      枚举值 备注
      TYPE 类,接口(包括注释类型)或枚举声明
      FIELD 字段声明(包括枚举常量)
      METHOD 方法声明
      PARAMETER 形式参数声明
      CONSTRUCTOR 构造函数声明
      LOCAL_VARIABLE 局部变量声明
      ANNOTATION_TYPE 注释类型声明
      PACKAGE 包裹申报
      TYPE_PARAMETER 类型参数声明
      TYPE_USE 使用类型

      @Target可以使用单个限制或多个限制value = {?,?,?,?}

    2. @Retention 注解,翻译为持久力、保持力。即用来修饰自定义注解的生命力。

      注解的生命周期有三个阶段:1、Java源文件阶段;2、编译到class文件阶段;3、运行期阶段。同样使用了RetentionPolicy枚举类型定义了三个阶段:

      枚举值 备注
      SOURCE 注解将被编译器忽略掉
      CLASS 注解将被编译器记录在class文件中,但在运行时不会被虚拟机保留,这是一个默认的行为
      RUNTIME 注解将被编译器记录在class文件中,而且在运行时会被虚拟机保留,因此它们能通过反射被读取到

      在平时开发中一般都是用Runtime

    3. @Documented 是被用来指定自定义注解是否能随着被定义的java文件生成到JavaDoc文档当中。

    4. @Inherited注解,是指定某个自定义注解如果写在了父类的声明部分,那么子类的声明部分也能自动拥有该注解。@Inherited注解只对那些@Target被定义为ElementType.TYPE的自定义注解起作用。

说点什么
支持Markdown语法
好耶,沙发还空着ヾ(≧▽≦*)o
Loading...