Annotation(注解)是 JDK 5中引入的机制,注解使得Java源代码中不但可以包含功能性的实现代码,还可以添加元数据。注解的功能类似于代码中的注释,所不同的是注解不是提供代码功能的说明,而是实现程序功能的重要组成部分。Java注解已经在很多框架中得到了广泛的使用,用来简化程序中的配置。
注解相当于一种标记,在程序中加了注解就等于为程序打了某种标记,以后,javac编译器,开发工具和其他程序可以用反射来了解你的类及各种元素上有无何种标记,去干相应的事。标记可以加在包,类,字段,方法的参数已经局部变量上。
jdk自带的三个注解:@SuppressWarnings(去除警告) @Deprecated(添加警告) @Override(提示复盖)
注解就相当于一个源程序中要调用的一个类,要应用某个注解,必须现有该注解类。
注解的定义与调用
定义:MyAnnotation.java
调用:AnnotationTest.Java
默认时编译器在编译时会去掉注解,所以我们要在注解类中再添加注解让编译器知道这个注解类要保留到运行时
@Retention元注解,设置注释可以保留到哪个阶段,有三种取值:
RetetionPolicy.SOURCRE、RetetionPolicy.CLASS、RetetionPolicy.RUNTIME;分别对应:java源文件->class文件->内存中的字节码,分别代表注解的生命周期。自定义注释默认值是保留到class阶段。
其他:
@SuppressWarnings(SOURCRE阶段) @Deprecated(RUNTIMR阶段)
@Override(SOURCRE阶段)
@Target设置注释能够加到什么类型身上:
@Target({ElementType.METHOD,ElementType.TYPE}),ElementType.TYPE中的TYPE是class、enum等的更高层次即父类
为注解增加各种属性
应用:
@ MyAnnotation (annotationAttr=@MetaAnnotation("flx"),color="red",value="abc",arrayAttr=1)
class AnnotationTest{}
调用: