Annotation是从JDK5.0开始引入的新技术,不是程序本身,可以对程序作出解释。
三个内置注解:
@Override (重写):代表一个重新的方法
@Deprecated (过时的):代表一个程序元素是不被推荐使用的,但是可以使用,在最新版本中已经被淘汰
@SuppressWarnings() (镇压警告):可以有参数,代表镇压的等级
四个元注解:
元注解是负责解释其他注解的注解,在定义注解时使用
@Target (位置):可以传一个ElementType的参数,代表注解可以作用的程序元素类型
@Retention(时间):表示注解在什么时间段(程序生命周期)有效,value可取三个值 runtime,class,sources
@Documented(文档):表示我们的注解将被包含在JAVA文档中
@Inherited(继承):表示子类可以继承父类的注解
自定义注解
1、定义注解用 @interface,所有的注解会自动继承java.lang.Annotation这一接口,并且不能再去继承别的类或是接口。
2、参数成员只能用public或默认(default)这两个访问权修饰
3、参数成员只能用基本类型byte,short,char,int,long,float,double,boolean八种基本数据类型和String、Enum、Class、annotations等数据类型,以及这一些类型的数组。
4、注解的参数格式为 参数类型+参数名()+值
5、当定义的注解只有一个参数时,可以将参数名设置为value,这样在调用注解时,可以简略传参。
6、可以通过default来声明参数的默认值
7、注解也可以没有定义成员, 不过这样注解就没啥用了,只起到标识作用
读取注解
要获取类、方法和字段的注解信息,必须通过Java的反射技术来获取 Annotation对象,除此之外没有别的获取注解对象的方法。
例如:
1 | method.getAnnotation(MyMethodAnnotation.class) |
获取注解后就可以对注解进行解析,从而进行一些小小的检查或者控制功能。
参考文献