注解英文为Annotation
Annotation是JDK5引入的新的技术
Annotation的作用:
Annotation的格式:
注解是以@注解名
在代码中存在的,还可以添加一些参数值,例如:@SuppressWarnings(value="unchecked")
Annotation在那里使用
可以附加在package、class、method、field等上面,相当于给他们添加了额外的辅助信息,我们可以通过反射机制编程实现对这些元数据的访问。
(1)@Override 表示重写
(2)@Deprecated表示不推荐使用,存在更好方法,之后可以回淘汰。
(3)@SuppressWarnings表示镇压警告。
元注解的作用就是负责注解其他注解,Java定义了4个标准的meta-annotation类型,他们可以被用来提供对其他annotation类型作说明。
这些注解和他们所支持类在java.lang.annotation
包中可以找到
(1)@Target
用来描述注解的使用范围(即:被描述的注解可以用在说明地方)
(2)@Retention
表示在什么级别保存该注释信息,用来描述注解的生命周期
SOURCE
<CLASS
<RUNRIME
(3)@Document
说明该注解将被包含在javadoc中
(4)@Inherited
说明子类可以继承父类中的注解
@Target的参数是一个枚举类型的数组,ElementType
。
public enum ElementType {TYPE, //类、接口(包括注释类型)或枚举声明FIELD, //字段声明(包括enum常量)METHOD, //方法声明PARAMETER, //参数CONSTRUCTOR, //构造函数声明LOCAL_VARIABLE, //局部变量说明ANNOTATION_TYPE,//注释类型声明PACKAGE, //包说明TYPE_PARAMETER, //类型参数声明TYPE_USE //类型使用
}
表示在什么级别保存该注释信息,用来描述注解的生命周期,它的参数也是一个枚举类型RetentionPolicy
public enum RetentionPolicy {//注释将被编译器丢弃。SOURCE,//注释将由编译器记录在类文件中,JVM不会保留(默认)CLASS,// 运行时(因此它们可以反射式地读取)RUNTIME
}
@interface 用来声明一个注解,格式:public @interface 注解名{ 定义内容 }
其中每一个方法实际上是声明了一个配置参数
方法的名称就是参数的名称
返回值类型就是参数的类型(返回值只能是基本类型、Class、String、enum
)
可以通过default来声明参数的默认值
如果只用一个参数成员,一般参数名称为value
注解元素必须有值,我们定义注解元素时,经常使用空字符串,0作为默认值。
@Target({ElementType.METHOD, ElementType.TYPE, ElementType.FIELD, ElementType.PARAMETER})
@Retention(RetentionPolicy.RUNTIME)
@Documented //生成到javadoc中
@Inherited // 子类可以继承
public @interface MyAnnotation {String[] value() default {};int id() default 0;
}
上一篇:00、数据结构绪论