一、自定义注解
package annotation_;
public @interface MyAnnotation {
String value() default "hi";
}
package annotation_;
@MyAnnotation("hello")
public class MyAnnotationTest {
}
二、元注解——修饰注解的注解
1、@Retention(RetentionPolicy.SOURCE):指定所修饰的注解的生命周期,
- SOURCE(注解只保留在源文件,当Java文件编译成class文件的时候,注解被遗弃;被编译器忽略)、
- CLASS(注解被保留到class文件,但jvm加载class文件时候被遗弃,这是默认的生命周期)、
- RUNTIME(注解将被编译器记录在类文件中,并在运行时由 VM 保留,因此它们可以被反射读取)
![在这里插入图片描述](https://img-blog.csdnimg.cn/de13530a18484abb8a4a10c5e30858d8.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2ExMjMxMjNzZGY=,size_16,color_FFFFFF,t_70)
2、@Target(ElementType.ANNOTATION_TYPE):指定注解能使用在哪里(方法、类)
- CONSTRUCTOR:表述构造器
- FIELD:用于表述域
- LOCAL_VARIABLE:描述局部变量
- TYPE:描述类、接口、enum
- METHOD:描述方法
- PACKAGE:描述包
- PARAMETER:描述参数
![在这里插入图片描述](https://img-blog.csdnimg.cn/d70c159619244d59b7f5903420dbc394.png)