注解
所有的注解类型都继承自这个接口(Annotation)
注解必须要解析,没有解析就没有意义。
解析一个类或者方法的注解往往有两种形式,一种是编译期直接的扫描,一种是运行期反射。编译器的扫描指的是编译器在对 java 代码编译字节码的过程中会检测到某个类或者方法被一些注解修饰,这时它就会对于这些注解进行某些处理。
元注解(用于修饰注解的注解)
JAVA 中有以下几个『元注解』:
•@Target:注解的作用目标(标记你的注解是用来修饰方法、类、属性)
•@Retention:注解的生命周期
•@Documented:注解是否应当被包含在 JavaDoc 文档中
•@Inherited:是否允许子类继承该注解
注解和反射
这个网址反射讲解很清楚:
http://www.importnew.com/23560.html
简单概括:
在面向对象的世界里,万事万物皆是对象。
类是java.lang.Class的实例化对象
方法是Method类的对象
成员变量是java.lang.reflect.Field类的对象
既然是对象,那就可以调用所属类的方法。
Class类的动态加载类
我们普遍认为编译时刻加载的类是静态加载类,运行时刻加载的类是动态加载类。
new创建对象是静态加载类,在编译时刻就需要加载所有的,可能使用到的类。
动态加载类是我们用哪个类就加载哪个类
对于一个类或者接口来说,Class 类中提供了以下一些方法用于反射注解。
•getAnnotation:返回指定的注解
•isAnnotationPresent:判定当前元素是否被指定注解修饰
•getAnnotations:返回所有的注解
•getDeclaredAnnotation:返回本元素的指定注解
•getDeclaredAnnotations:返回本元素的所有注解,不包含父类继承而来的