JavaAnnotation详解.ppt_第1页
JavaAnnotation详解.ppt_第2页
JavaAnnotation详解.ppt_第3页
JavaAnnotation详解.ppt_第4页
JavaAnnotation详解.ppt_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

浪 曦 视 频 在 线 Java Annotation详解 讲师:风中叶 版 权 归 浪 曦 视 频 在 线 所 有 浪曦视频在线http:/bbs.langsin.co m 第2页 概 述 掌握Java Annotation特性与使用方式 Annotation的由来 Annotation的定义方式 Annotation的使用方式 JDK5内建Annotation详解 Annotation高级特性 浪曦视频在线http:/bbs.langsin.co m 为什么使用Annotation 在JAVA应用中,我们常遇到一些需要使用模版代码的情况。例如,为 了编写一个 web service,我们必须提供一对接口和实现作为模版代 码。如果使用annotation对远程访问的方法代码进行修饰的话,这个 模版就能够使用工具自动生成。 另外,一些API需要使用与程序代码同时维护的附属文件。例如EJB需 要一个部署描述符。此时在程序中使用annotation来维护这些附属文 件的信息将十分便利而且减少了错误。 浪曦视频在线http:/bbs.langsin.co m Annotation工作方式 从Java5.0版发布以来,5.0平台提供了一个正式的annotation功 能:允许开发者定义、使用自己的annotation类型。此功能由一 个定义annotation类型的语法和一个描述annotation声明的语法 ,读取annotation的API,一个使用annotation修饰的class文件 ,一个annotation处理工具(apt)组成。 浪曦视频在线http:/bbs.langsin.co m Annotation工作方式 annotation并不直接影响代码语义,但是它能够工作的方式被看作类 似程序的工具或者类库,它会反过来对正在运行的程序语义有所影响 。annotation可以从源文件、class文件或者以在运行时反射的多种 方式被读取。 当然annotation在某种程度上使javadoc tag更加完整。一般情况下 ,如果这个标记对java文档产生影响或者用于生成java文档的话,它 应该作为一个javadoc tag;否则将作为一个annotation。 第5页 浪曦视频在线http:/bbs.langsin.co m 使用JDK5内建Annotation 参见程序实例 Override Deprecated SuppressWarnings 第6页 浪曦视频在线http:/bbs.langsin.co m 限定Override父类方法Override java.lang.Override是个Marker annotation 用于标示的Annotation,Annotation名称本身即表示了要给工具程序 的信息 第7页 浪曦视频在线http:/bbs.langsin.co m 标示方法為Deprecated Deprectated 对编译程序说明某个方法已经不建议使用,即该方法是过时的。 java.lang.Deprecated也是個Marker annotation Deprecated这个名称在告知编译程序,被Deprecated标示的方法是 一个不建议被使用的方法 第8页 浪曦视频在线http:/bbs.langsin.co m 抑制编译程序警告SuppressWarnings 对编译程序说明某个方法中若有警告讯息,则加以抑制 第9页 浪曦视频在线http:/bbs.langsin.co m 自定义Annotation类型 定义Marker Annotation,也就是Annotation名称本身即提供信息 对于程序分析工具来说,主要是检查是否有MarkerAnnotation的出现 ,并作出对应的动作 参见程序范例 第10页 浪曦视频在线http:/bbs.langsin.co m Single-value annotation value成员设定默认值,用“default“关键词 数组方式的使用 枚举在Annotation中的应用 第11页 浪曦视频在线http:/bbs.langsin.co m 自定义Annotation类型 使用interface自行定义Annotation型态时,实际上是自动继承了 java.lang.annotation.Annotation接口 由编译程序自动为您完成其它产生的细节 在定义Annotation型态时,不能继承其它的Annotation型态或是接口 第12页 浪曦视频在线http:/bbs.langsin.co m 自定义Annotation类型 定义Annotation型态时也可以使用包来管理类别 方式类同于类的导入功能 第13页 浪曦视频在线http:/bbs.langsin.co m 告知编译程序如何处理Retention java.lang.annotation.Retention型态可以在您定义Annotation型态 时,指示编译程序该如何对待您的自定义的Annotation型态 预设上编译程序会将Annotation信息留在.class档案中,但不被虚拟 机读取,而仅用于编译程序或工具程序运行时提供信息 浪曦视频在线http:/bbs.langsin.co m 告知编译程序如何处理Retention 在使用Retention型态时,需要提供 java.lang.annotation.RetentionPolicy的枚举型态 package java.lang.annotation; public enum RetentionPolicy SOURCE, /编译程序处理完Annotation信息后就完成任务 CLASS, /编译程序将Annotation储存于class档中,缺省 RUNTIME /编译程序将Annotation储存于class檔中,可由VM读入 第15页 浪曦视频在线http:/bbs.langsin.co m 告知编译程序如何处理Retention RetentionPolicy为SOURCE的例子是SuppressWarnings 仅在编译时期告知编译程序来抑制警告,所以不必将这个信息储存于 .class档案 RetentionPolicy为RUNTIME的时机,可以像是您使用Java设计一个程 序代码分析工具,您必须让VM能读出Annotation信息,以便在分析程 序时使用 搭配反射(Reflection)机制,就可以达到这个目的 第16页 浪曦视频在线http:/bbs.langsin.co m 告知编译程序如何处理Retention java.lang.reflect.AnnotatedElement接口 public Annotation getAnnotation(Class annotationType); public Annotation getAnnotations(); public Annotation getDeclaredAnnotations(); public boolean isAnnotationPresent(Class annotationType); Class、Constructor、Field、Method、Package等类别,都实现了 AnnotatedElement接口 第17页 浪曦视频在线http:/bbs.langsin.co m 告知编译程序如何处理Retention 定义Annotation时必须设定RetentionPolicy为RUNTIME,也就是可以 在VM中读取Annotation信息 参见程序 第18页 浪曦视频在线http:/bbs.langsin.co m 限定annotation使用对象Target 使用java.lang.annotation.Target可以定义其使用之时机 在定义时要指定java.lang.annotation.ElementType的枚举值之一 第19页 浪曦视频在线http:/bbs.langsin.co m 限定annotation使用对象Target package java.lang.annotation; public enum ElementType TYPE, /适用class, interface, enum FIELD, /适用field METHOD, /适用method PARAMETER, /适用method上之parameter CONSTRUCTOR, /适用constructor LOCAL_VARIABLE, /适用局部变量 ANNOTATION_TYPE, /适用annotation型态 PACKAGE /适用package 参见范例 第20页 浪曦视频在线http:/bbs.langsin.co m 要求为API文件Documented 想要在使用者制作JavaDoc文件的同时,也一并将Annotation的讯息 加入至API文件中 使用java.lang.annotation.Documented 第21页 浪曦视频在线http:/bbs.langsin.co m 子类是否继承父类Inherited 预设上父类别中的Annotation并

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论