本文引用与张孝祥老师的视频总结
1.注解相当于一种标记
加了注解就等于打上了某种标记,没加,则等于没有某种标记,以后,javac编译器,开发工具包和其他程序可以用反射来了解你的类以及各种元素上有何种标记,看你有什么标记,就去干相应的事,标记可以加载包,类,字段,方法,方法的参数以及局部变量上
2.看java.lang包可以看到jdk中提供的最基本的annotation
譬如
(1) @SuppressWarnings 再程序前面加上可以在javac编译中去除警告--阶段是SOURCE
(2) @Deprecated 带有标记的包,方法,字段说明其过时----阶段是SOURCE
(3)@Overricle 打上这个标记说明该方法是将父类的方法重写--阶段是SOURCE
3.在定义Annotation类型时,还可以设置Annotation类型适用的程序元素种类。
通过Annotation类型@Target来设置,如果未设置@Target,则
表示适用于所有的程序元素。枚举类ElementType中的枚举常量用来设置@Targer,枚举类ElementType中的枚举常量如下
ANNOTATION_TYPE--表示用于Annotation类型
TYPE--表示用于类,接口和枚举,以及Annotation类型
CONSTRUCTOR--用于构造方法
FIELD--用于枚举常量或成员变量
METHOD--表示用于方法
FARAMETER--表示用于参数
LOCAL_VARIABLE--表示用于局部变量
PACKAGE--表示用于包
4.@Retention设置Annotation的有效范围,也就是Annotation有三个阶段如下
@Retention(RetentionPolicy.RUNTIME)
枚举类RetentionPolicy中的枚举常量
(1)SOURCE--表示不编译Annotation到类文件中。有效范围最小
(2)CLASS--表示编译Annotation到类文件中,但在运行时不加载Annotation到jvm中(默认值再CLASS阶段)
(3)0RUNTIME--表示运行时加载Annotation到JVM中,有效范围最大