Skip to content

注解

基本格式

java
public @interface AnnotationDemo01 {

}

元注解

@Target

声明注解的作用域

也就是写该注解是写在类上还是,方法上,等

作用域有

其中,ElementType 是一个枚举类, 用来枚举 不同的类型,也可以不使用枚举

ElementType.METHOD   方法
ElementType.CONSTRUCTOR  构造方法
ElementType.TYPE  类型
ElementType.FIELD 属性

还有其他的的,

@Retention

用来约束注解的生命周期

有3种类型

SOURCE :注解将被编译器丢弃(该类型的注解信息只会保留在源码里,源码经过编译后,注解信息会被丢弃,不会保留在编译好的class文件里)
CLASS :注解在class文件中可用,但会被VM丢弃(该类型的注解信息会保留在源码里和class文件里,在执行的时候,不会加载到虚拟机中),请注意,当注解未定义Retention值时,默认值是CLASS,如Java内置注解,@Override、@Deprecated、@SuppressWarnning等
RUNTIME :注解信息将在运行期(JVM)也保留,因此可以通过反射机制读取注解的信息(源码、class文件和执行的时候都有注解的信息),如SpringMvc中的@Controller、@Autowired、@RequestMapping等