• 注解


    注解

     

    运行

    Sun JDK字节码生成分为三个阶段:

    1. 解析和填充符号表过程,生成语法树
    2. 插入式注解处理器的注解处理过程,可以操作语法树。
      1. 这个操作语法树的特性,可以让注解生成代码或者填充默认值
      2. GoogleAutoValue值类型生成类库
    3. 分析与字节码生成。

    作用阶段

    枚举类型 java.lang.annotation.RetentionPolicy

    1. SOURCE表示这个Annotation类型的信息只会保留在源码里,源码经过编译之后,Annotation的数据就会消失,并不会保留在编译好的. class文件里;
    2. CLASS表示这个Annotation类型的信息在源码保留,在.class文件也保留,但不会把这些信息加载到虚拟机(JVM)中,如果不设置, 系统默认值是CLASS
    3. RUNTIME表示在源码,编译后的.class都保存信息,在执行的时候也会把这些信息加载到JVM

    作用范围

    枚举类型 java.lang.annotation.ElementType

    1. TYPE(类型)可以用在classinterface eumnannotation上面
    2. FILED(字段)
    3. METHOD(方法)
    4. PARAMETER(参数)
    5. CONSTRUCTOR(构造器)
    6. LOCAL_VARIABLE(局部变量)
    7. ANNITATION_TYPE(注解)
    8. PACKAGE(包)其中TYPE是指,如果没有制定, 那么它可以用在任何上面

      我们写一个最简单的注解,可以为类和字段上使用,作用于运行期间

      测试类

      我们可以通过反射获取类、方法、字段上的注解,根据注解的类型,我们可以获取注解的值,进而,把值赋值给操作对象。

      结果是熟悉的儿歌O(_)O哈哈~

       

      注解处理器

      注解处理器在编译期发生作用,被注解处理器支持的注解标记的类、字段、方法,可以被注解处理器改变语法树,生成新的类或者字节码。这里用注解处理器处理java Bean生成模板。

      自定义javaSe.special.annotation.processor.AutoValue.java

      Java Bean

       

      注解处理器

      比较重要的几个要重写的方法,可以用注解赋值如下,或者重写父类对应的方法。

      必须要重写的方法:

      需要支持的java源码版本

      一个或多个支持的注解类型

      处理程序。

      编译及结果

      javac

      //指定自定义注解相关字节码classpath

      -cp E:work4javaMyJavaDesignsrc

      //指定自定义注解处理器

      -processor javaSe.special.annotation.processor.AutoValueProcessor

      //指定自定义注解处理器根路径

      -processorpath E:work4javaMyJavaDesignsrc

      //要编译的一个或多个类

      E:work4javaMyJavaDesignsrcjavaSespecialannotationprocessorStudent.java E:work4javaMyJavaDesignsrcjavaSespecialannotationprocessorTeacher.java

       

      结果运行图:

  • 相关阅读:
    SqlServer:创建索引
    SqlServer:使用视图 View
    SqlServer:修改和删除数据
    网络管理:SNMPv1
    《剑指 Offer》学习记录:题 9:用两个栈实现队列
    《剑指 Offer》学习记录:题 27:二叉树的镜像
    团队冲刺9
    团队冲刺8
    团队冲刺7
    团队冲刺6
  • 原文地址:https://www.cnblogs.com/jiumao/p/7136434.html
Copyright © 2020-2023  润新知