

注解:
注解,官方把它叫做元数据,即一种描述数据的数据。所以,可以说注解就是源代码的元数据。用它来可以来描述、标记我们的源代码。可以作为配置信息控制程序的运行,注解可以在一些场合用来替代配置文件Annotation 注解: 程序中给人看到提示信息叫注释,形式: @xxxx(….)
@Override : 限定重写父类方法, 该注解只能用于方法
@Deprecated : 用于表示某个程序元素(类, 方法等)已过时
@SuppressWarnings : 抑制编译器警告.
自定义注解:
1.声明注解
(1) 使用 @interface关键字来定义注解,在这个类中可以声明注解的属性
1、注解属性的声明类似于在为接口声明一个方法,同时可以为属性设定默认值
2、注解属性支持如下类型:String、基本数据类型、枚举、Class、其它注解类型、以上数据类型相应一维数组
3、如果注解中只包含一个名为value的属性,则这个属性在使用时可以省略注解的名字直接写值
(2)使用元注解对注解进行描述
J2SE5.0版本在 java.lang.annotation提供了四种元注解,专门注解其他的注解:
@Documented –注解是否将包含在JavaDoc中
@Retention –什么时候使用该注解
@Target? –注解用于什么地方
@Inherited – 是否允许子类继承该注解
1)@Documented–一个简单的Annotations标记注解,表示是否将注解信息添加在java文档中,一般不用管。
2)@Retention– 定义该注解的生命周期,很重要,必须指定,以下是3种生命周期的介绍
1、RetentionPolicy.SOURCE – 在编译阶段丢弃。这些注解在编译结束之后就不再有任何意义,所以它们不会写入字节码。@Override, @SuppressWarnings都属于这类注解。
2、RetentionPolicy.CLASS – 在类加载的时候丢弃。在字节码文件的处理中有用。注解默认使用这种方式。
3、RetentionPolicy.RUNTIME– 始终不会丢弃,运行期也保留该注解,因此可以使用反射机制读取该注解的信息。我们自定义的注解通常使用这种方式。
3)@Target – 表示该注解用于什么地方。如果不明确指出,该注解可以放在任何地方。以下是一些可用的参数。需要说明的是:属性的注解是兼容的,如果你想给7个属性都添加注解,仅仅排除一个属性,那么你需要在定义target包含所有的属性。

4)@Inherited – 定义该注释和子类的关系
我们定义了自己的注解并将其应用在业务逻辑的方法上。现在我们需要写一个用户程序调用我们的注解。这里我们需要使用反射机制。如果你熟悉反射代码,就会知道反射可以提供类名、方法和实例变量对象。所有这些对象都有getAnnotation()这个方法用来返回注解信息。我们需要把这个对象转换为我们自定义的注释(使用 instanceOf()检查之后),同时也可以调用自定义注释里面的方法。