一、自定义注解
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://i-blog.csdnimg.cn/blog_migrate/772540c92c22d1969e22bc37bf83c562.png)
2、@Target(ElementType.ANNOTATION_TYPE):指定注解能使用在哪里(方法、类)
- CONSTRUCTOR:表述构造器
- FIELD:用于表述域
- LOCAL_VARIABLE:描述局部变量
- TYPE:描述类、接口、enum
- METHOD:描述方法
- PACKAGE:描述包
- PARAMETER:描述参数
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/751c4a06b20a5c8a70b7d9753426432c.png)