1. 怎样查看注解信息
- 利用反射机制在运行时进行查看和利用注解信息
2. 反射相关类中与注解有关的方法有
Class
、Field
、Method
、Constructor
中都有如下方法public Annotation[] getAnnotations()
:获取所有的注解public Annotation[] getDeclaredAnnotations()
:获取所有本元素上直接声明的注解,忽略inherited
来的public <A extends Annotation> A getAnnotation(Class<A> annotationClass)
:获取指定类型的注解,没有就返回null
public boolean isAnnotationPresent(Class<? extends Annotation> annotationClass)
:判断是否有指定类型的注解
3. 怎样理解 Annotation
Annotation
是一个接口,它表示注解。具体定义为1
2
3
4
5
6
7public interface Annotation {
boolean equals(Object obj);
int hashCode();
String toString();
//返回真正的注解类型
Class<? extends Annotation> annotationType();
}实际上,内部实现时,所有的注解类型都是扩展的
Annotation
对于
Method
和Constructor
,它们都有方法参数,而参数也可以有注解,所以它们都有如下方法:public Annotation[][] getParameterAnnotation()
。返回值是一个二维数组,每个参数对应一个一维数组