123456789101112131415161718192021222324252627282930 |
- package com.sf.anno;
- import java.lang.annotation.*;
- // 声明这是一个注解
- // 元注解 是声明注解用法的注解
- // Target 目标 指定注解使用的位置 ElementType是枚举类型
- // 如果是 ElementType.TYPE 那么意思是注解放在类上
- // 如果是 ElementType.FIELD 那么意思是注解放在字段上
- // 如果是 ElementType.METHOD 那么意思是注解放在方法上
- // 如果是 ElementType.PARAMETER 那么意思是注解放在方法参数上
- // 如果是 ElementType.CONSTRUCTOR 那么意思是注解放在构造器上
- // Retention 保留期 注解的存活时间
- // RetentionPolicy是提供了几种使用保留期的方式
- // 如果是RetentionPolicy.SOURCE 只在源代码阶段保留 .java源代码 -> .class字节码 -> jvm识别为机器语言
- // 如果是RetentionPolicy.CLASS 只在字节码阶段保留 .java源代码 -> .class字节码 -> jvm识别为机器语言
- // 如果是RetentionPolicy.RUNTIME 在代码运行阶段也就是JVM中保留 .java源代码 -> .class字节码 -> jvm识别为机器语言
- // Inherited 如果注解被此注解标注 而子类没有被其他注解标注 那么子类会继承父类的注解
- @Inherited
- @Target({ElementType.TYPE})
- @Retention(RetentionPolicy.RUNTIME)
- public @interface TestAnno {
- // 注解只有成员变量 没有方法
- // 以没有入参的方法来声明变量
- int id() default 0;
- // 可以声明参数的默认值
- String msg() default "";
- }
|