Annotation的作用
- 不是程序本身,可以对程序做出解释
- 可以被其他程序(例如:编译器等)读取
格式:
@注解名
,可以添加一些参数
使用:
包、类、方法、字段等上面,可以添加反射机制编程实现对这些元数据的访问
元注解:负责注解其他注解,java中定义了四个标准的元注解类型,他们被用来提供对其他注解类型做说明
- @Target:描述注解使用范围,即可以标在什么上面(例如,类、方法、字段等等)
- @Retention:描述注解生命周期,默认是CLASS,有三个可选值,SOURCE < CLASS < RUNTIME,一般使用RUNTIME
- @Document:说明该注解被包含在javadoc中;例如:
- @Inherited:说明子类可以继承父类中的该注解;例如:
定义一个注解,使用@Inherited修饰:
定义父类,并使用刚定义的注解修饰
定义子类,继承父类:
获取子类的注解:
结果:
如果去掉@Inherited,则子类获取不到我们定义的注解
获取到一个类的字节码文件(如:类.class),便可以获得该类上标有什么注解、以及其对应的属性,我们可以针对不同的注解、不同的属性做不同的处理。