注解(元注解)为我们在代码中添加信息提供了一种形式化的方法,使我们在之后的某个时刻非常方便的使用这些数据。注解是jdk1.5之后才出现的。注解可以用来生成描述符文件,甚至是新的类定义,并且有助于减轻编写 模板 代码的的负担。
注解的优点:我们可以将这些源代码保存在java源代码中,并利用annotation API为自己的注解构造处理工具。更加干净易读的代码以及编译期类型检查等。
注解语法比较简单,除了@符号的使用外,与java基本的固有的 语法基本一致。在java中内置了3种注解:@Override、@Deprecated、@SuppressWarning
@Override:重写父类方法
@Deprecated:标识方法过时了,一般会有新的方法代替了
@SuppressWarnings:关闭不当的编译器警告信息,如我们在使用集合List时,创建集合对象没有用泛型就会有黄色的警告。
注意:注解中没有任何元素则为标记注解,注解中的方法不能有参数。
java元注解:
@Target:标识该注解可以用于干什么的地方,可能的ElementType参数包括:
CONSTRUCTOR:构造方法的声明,
FIELD:字段的声明(包括enum(枚举)实例),
LOCAL_VARIABLE:局部变量声明,
METHOD:方法声明,PACKAGE:包声明,(常用)
PARAMETER参数声明,
TYPE:类、接口(包括注解类型)或enum声明(常用)
@Retention:标识该注解信息保存的级别,可选的RetentionPolicy参数包括:
SOURCE:注解将被编译器丢弃。
CLASS:注解在class文件中可用,但会被VM丢弃。
RUNTIME:VM将在运行期也保留注解,因此可以通过反射机制读取注解的信息。(常用)
@Documented 将此注解包含在Javadoc中
@Inherited允许子类继承父类中的注解
注解元素可用的类型: int float boolean等基本类型,String Class enum Annotation,及其以上类型的数组。(包装类型也不允许使用)
默认值限制:元素不能有不确定的值,即元素必须要么具有默认值,要么在使用注解时提供元素的值。
对于非基本类型的元素,无论在源代码声明还是注解接口定义默认值时不能以null作为值。为了避免这些约束我们在定义时给一些默认值,如空字符串,负数、Integer.MAX等作为默认值
注解不能继承。
示例见下篇博客: http://shareisattitude.iteye.com/blog/2252581
参考:java编程思想