Java注解

xiaoxiao2021-02-28  124

注解

 

运行

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

解析和填充符号表过程,生成语法树

插入式注解处理器的注解处理过程,可以操作语法树。

这个操作语法树的特性,可以让注解生成代码或者填充默认值Google的AutoValue值类型生成类库分析与字节码生成。

作用阶段:

枚举类型 java.lang.annotation.RetentionPolicy

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

作用范围

枚举类型 java.lang.annotation.ElementType

TYPE(类型)可以用在class, interface ,eumn,annotation上面 FILED(字段) METHOD(方法) PARAMETER(参数) CONSTRUCTOR(构造器) LOCAL_VARIABLE(局部变量) ANNITATION_TYPE(注解)

PACKAGE(包)其中TYPE是指,如果没有制定, 那么它可以用在任何上面

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

测试类

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

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

 

 

注解处理器

 

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

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

Java Bean

 

注解处理器

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

必须要重写的方法:

需要支持的java源码版本

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

处理程序。

编译及结果

javac

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

-cp E:\work4java\MyJavaDesign\src

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

-processor javaSe.special.annotation.processor.AutoValueProcessor

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

-processorpath E:\work4java\MyJavaDesign\src

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

E:\work4java\MyJavaDesign\src\javaSe\special\annotation\processor\Student.java E:\work4java\MyJavaDesign\src\javaSe\special\annotation\processor\Teacher.java

 

结果运行图:

转载请注明原文地址: https://www.6miu.com/read-18731.html

最新回复(0)