介绍
注解在我们的日常开发中可谓有着不可估值的重量,但是我们用到的机会非常的少,今天这篇作为开篇记录, 如果说注释是写给人看的话,那么注解就是写给程序看的 注解就像是一个标签 贴在类上 方法上 或者字段上面。 注解的本质就是接口 反编译过之后就是自动继承了Annotation
元注解
元注解就是加在注解上面的注解。
-
@Documented
用于制作文档, -
@Target
加在注解上,限定该注解的使用位置。不写的话,好像默认各个位置都是可以的。如果需要限定注解的使用位置,可以在自定义的注解上使用该注解。我们本次默认即可,不特别限定。 -
@Retention(注解的保留策略)
注解的保留策略有三种:SOURCE/ClASS/RUNTIME
-
注解主要被反射读取
-
反射只能读取内存中的字节码信息
-
RetentionPolicy.CLASS指的是保留到字节码文件,它在磁盘内,而不是内存中。虚拟机将字节码文件加载进内存后注解会消失
-
要想被反射读取,保留策略只能用RUNTIME,即运行时仍可读取
使用
-
getAnnotation 方法
每一个类 或者方法或者属性上面都有getAnnotation 方法 可以获取这个类上面的注解
@Retention(RetentionPolicy.RUNTIME)
public @interface IndexID {
String value() default "no feault";
}
@IndexID("123")
public class PersonModel {
public PersonModel() {
}
}
//使用
@Test
void annotation() {
IndexID annotation = PersonModel.class.getAnnotation(IndexID.class);
System.out.println(annotation.value());
}