1)开发人员可以在不改变原有逻辑的情况下,在源文件嵌入一些补充信息。可以用来修饰类、属性、方法,并且不影响程序的运行,无论是否使用Annotation代码都可以正常执行。
2)接口
import java.lang.annotation.Annotation
系统内建的Annotation
1)@Override:主要的实在覆写的时候使用,用于保证覆写方法的正确性。
2)@Deparecated:主要功能是用来申明一个建议使用的方法。如果在程序中使用了该方法,则在编译的时候出现警告信息。
3)@SuppressWarning主要功能是用来压制警告。
自定义的Annotation1)定义一个简单的Annotation
[public] @interface Annotation 名称{
数据类型 数据变量();
}
2)向Annnotation中设置内容
public @interface MyDefaultAnnotationMoreParam{
public String key(); //接收设置变量
public String value();
@MyDefaultAnnotationMoreParam("name","张三"); //使用自定义的Annotation
calss Dome{
}
3)默认值:只要在定义Annotation时设置了属性,就必须在使用时设定它们的属性。
public @interface MyDefaultAnnotationMoreParam{
public String key() default "baidu"; //接收设置的内容
public String value();
4)使用枚举限制设定的内容
public enum Browser{
baidu,firefox,google
}
Retention和RetentionPolicy
Retention定义一个Annotation的保存范围。Retention定义存在一个RetentionPolicy的变量。
RetentionPolicy变量范围
1)SOURCE:保留在程序的源文件中(.java),编译成功之后不会保留在类文件中(.class)。
2)CLASS:保存在源文件和类文件中,不会被加载到虚拟机(JVM)中,如果没有指定范围,则默认是此值。
3)RUNTIME:保存在源文件和类文件中,在执行时会加载到虚拟机中。
通过反射取得Annotation1)可以取得全部的Annotation
2)可以取得指定的Annotation的内容
@Target对一个自定义的Annotation能在指定的位置出现。
@Documented
对一个自定义的Annotation进行注释。
@Inherited注释
用于标志一个父类注释是否可以被子类所继承。