后端 | Java | 注解
笔记来源:Java入门基础视频教程,java零基础自学就选黑马程序员Java入门教程
一、注解(Annotation)
就是Java代码中的特殊标记,比如@Override、@Test,作用是:让其他程序根据注解信息来决定怎么执行该程序。
注解可以用在类上、构造器上、方法上、成员变量上、参数上等位置处。
注解的原理:注解本质是一个接口,Java中所有注解都是继承了Annotation接口的。
@注解(...):其实就是一个实现类对象,实现了该注解以及Annotation接口。
二、自定义注解
自己定义的注解。
特殊属性名:value
如果注解中只有一个value属性,使用注解时,value名称可以不写。
三、元注解
元注解是指修饰注解的注解。
常见的元注解:
@Target:@Target(ElementType.Type),声明当前被修饰的注解只能在哪些位置使用。
TYPE:类、接口。
FIELD:成员变量。
METHOD:成员方法。
PARAMETER:方法参数。
CONSTRUCTOR:构造器。
LOCAL_VARIABLE:局部变量。
@Retention:@Retention(RetentionPolicy.RUNTIME),声明注解的保留周期。
SOURCE:只作用在源码阶段,字节码文件中不存在。
CLASS(默认值):保留到字节码文件阶段,运行阶段不存在。
RUNTIME(开发常用):一直保留到运行阶段。
四、注解的解析
就是判断类上、方法上、成员变量上是否存在注解,并把注解里的内容给解析出来。
要解析谁上面的注解,就应该先拿到谁;比如要解析类上的注解,则应该先获取该类的Class对象,再通过Class对象解析其上面的注解。
Class、Method、Field、Constructor都实现了AnnotatedElement接口,他们都拥有解析注解的能力。
AnnotatedElement接口提供的方法:
public Annotation[] getDeclaredAnnotations():获取当前对象上面的注解。
public T getDeclaredAnnotation(Class<T> annotationClass):获取指定的注解对象。
public boolean isAnnotationPresent(Class<Annotation> annotation):判断当前对象上是否存在某个注解。