注解annotation.docxVIP

  • 3
  • 0
  • 约9.84千字
  • 约 11页
  • 2018-01-04 发布于河南
  • 举报
注解annotation

Annotation简介J2SE中对metadata提出的功能是Annotation, metadata就是“数据的数据”(Data About Data).以表格为例,表格中呈现的就是数据,但有时还会有额外的数据用来说明表格的作用,从这个角度看,metadata就不这么奇怪。在J2SE中,Annotation的主要目的介于源代码和API文件说明之间,Annotation对程序代码做出一些说明与解释。Class中可以包含这些解释,编译器或其他程序分析工作可以使用Annotation来做分析。可以从java.lang.Override 、java.lang.Deprecated 、java.lang.SuppressWarning这三个J2SE5.0中标准的Annotation类型开始了解Annotation的作用。java.lang.Override是一个Marker Annotation,简单地说就是用于标识的Annotation, Annotation名称本身即表示了要给工具程序的信息。例如Override这个名称告诉编译器,被@Override表示的方法必须是重写父类中的同名方法。java.lang.Deprecated也是一个Marker Annotation,对编译器说明某个方法已经不建议使用。如果开发人员试图使用或重写被@Deprecated标识的方法,编译器必须提出警告信息。要详细知道警告信息,可以在编译时加上 –Xline:deprecation变量,编译器会告诉你是因为使用了某个被@Deprecated标示的方法而提出警告。java.lang.SuppressWarning对编译器说明某个方法中若有警告信息,则加以抑制,不用在编译完成后出现警告。可以指定忽略多个警告:@SuppressWarning(value={“unchecked”,“deprecation”})@SuppressWarning即所谓的Single-Value Annotation,因为这样的Annotation只有一个成员,称为value成员,可在使用Annotation作额外的信息指定。Marker Annotation也就是Annotation本身即提供信息,对于程序分析工具来说,主要是检查是否有Marker Annotation的出现,并做出相应的动作。Marker Annotation没有任何成员在 Annotation定义中。编译完成后,就可以在程序代码中使用这个Annotation.如下是@Override、 @Deprecated这两个Marker Annotation的具体定义:@Target(ElementType.METHOD)@Retention(RetentionPolicy.SOURCE)public @interface Override {}@Documented@Retention(RetentionPolicy.RUNTIME)public @interface Deprecated {}当使用@interface自行定义Annotation类型时,实际上是自动继承了java.lang.annotation.Annotation接口,并由编译器自动完成其他产生的细节,并且在定义Annotation类型时,不能继承其他的Annotation类型或接口。定义Annotation类型时也可以使用包机制类管理类。如果是在别的包下使用这些自定义的Annotation,记得使用import告诉编译器Annotation的包位置。例如:package onlyfun.caterpillar;public @interface Debug{}import onlyfun.caterpillar.Debug;public class Test{@Debugpublic void doTest(){}}或是使用完整的Annotation名称。例如:public class Test{@onlyfun.caterpillar.Debugpublic void doTest(){}}注解的应用结构图注解就相当于一个你的源程序中要调用的一个类,要在源程序中应用某个注解,得先准备好了这个注解类。就像你要调用某个类,得先要开发好这个类。注解相当于一个标记,在程序中加了注解就等于为程序打上了某种标记,没有,则等于没有某种标记,以后,javac编译器,开发工具和其它程序可以用反射来了解你的类及各种元素上有无何种标记,看你有什么标记,就去干相应的事。标记可以加在包、类、字段、方法,方法的参数以及局部变量上。元注解meta-annotation 所谓meta-Annotation就是Annotation类型的数据,也就是Annotation

文档评论(0)

1亿VIP精品文档

相关文档