Java注解(转载)

来源:互联网 发布:淘宝宝贝数据包 编辑:程序博客网 时间:2024/06/18 12:41

一、什么是注解

    说起注解,得先提一提什么是元数据(metadata)。所谓元数据就是数据的数据。也就是说,元数据是描述数据的。就象数据表中的字段一样,每个字段描述了这个字段下的数据的含义。而J2SE5.0中提供的注解就是Java源代码的元数据,也就是说注解是描述java源代码的。在J2SE5.0中可以自定义注解。使用时在@后面跟注解的名字。


二、J2SE5.0中预定义的注解

    在J2SE5.0的java.lang包中预定义了三个注解。它们是Override、Deprecated和SuppressWarnings。下面分别解解它们的含义。

Override

    这个注解的作用是标识某一个方法是否覆盖了它的父类的方法。

Deprecated

这个注解是一个标记注解。所谓标记注解,就是在源程序中加入这个标记后,并不影响程序的编译,但有时编译器会显示一些警告信息。

那么Deprecated注解是什么意思呢?如果你经常使用eclipse等IDE编写java程序时,可能会经常在属性或方法提示中看到这个词。如果某个类成员的提示中出现了个词,就表示这个并不建议使用这个类成员。因为这个类成员在未来的JDK版本中可能被删除。之所以在现在还保留,是因为给那些已经使用了这些类成员的程序一个缓冲期。如果现在就去了,那么这些程序就无法在新的编译器中编译了。


SuppressWarnings

这个世界的事物总是成对出现。即然有使编译器产生警告信息的,那么就有抑制编译器产生警告信息的。

三、如何自定义注解

注解的强大之处是它不仅可以使java程序变成自描述的,而且允许程序员自定义注解。注解的定义和接口差不多,只是在interface前面多了一个“@”。

四、如何对注解进行注解

这一节的题目读起来虽然有些绕口,但它所蕴涵的知识却对设计更强大的java程序有很大帮助。

在上一节讨论了自定义注解,由此我们可知注解在J2SE5.0中也和类、接口一样。是程序中的一个基本的组成部分。既然可以对类、接口进行注解,那么当然也可以对注解进行注解。

使用普通注解对注解进行注解的方法和对类、接口进行注解的方法一样。所不同的是,J2SE5.0为注解单独提供了4种注解,即元注解

元注解理解:
注解可以用于注解类(annotate Classes)
可以用于注解接口(annotate Interfaces)
可以用于注解枚举类型(annotate Enums)
因此注解同样也可以用于注解注解(annotate Annotations)
它们是Target、Retention、Documented和Inherited。下面就分别介绍这4种注解

Target

这个注解理解起来非常简单。由于target的中文意思是“目标”,因此,我们可能已经猜到这个注解和某一些目标相关

Retention

既然可以自定义注解,当然也可以读取程序中的注解(如何读取注解将在下一节中讨论)。但是注解只有被保存在class文件中才可以被读出来。而Retention就是为设置注解是否保存在class文件中而存在的

Documented

这个注解和它的名子一样和文档有关。在默认的情况下在使用javadoc自动生成文档时,注解将被忽略掉。如果想在文档中也包含注解,必须使用Documented为文档注解。

Inherited

继承是java主要的特性之一。在类中的protected和public成员都将会被子类继承,但是父类的注解会不会被子类继承呢?很遗憾的告诉大家,在默认的情况下,父类的注解并不会被子类继承。如果要继承,就必须加上Inherited注解。



原创粉丝点击