摘要:
本文针对 java 初学者或者 annotation 初次使用者全面地说明了 annotation 的使用方法、定义方式、分类。初学者可以通过以上的说明制作简单的 annotation 程序,但是对于一些高级的 annotation 应用(例如使用自定义 annotation 生成 javabean 映射 xml 文件)还需要进一步的研究和探讨。涉及到深入 annotation 的内容,作者将在后文《Java Annotation 高级应用》中谈到。
同时,annotation 运行存在两种方式:运行时、编译时。上文中讨论的都是在运行时的 annotation 应用,但在编译时的 annotation 应用还没有涉及。
一、为什么使用 Annotation:
在 JAVA 应用中,我们常遇到一些需要使用模版代码。例如,为了编写一个 JAX-RPC web service,我们必须提供一对接口和实现作为模版代码。如果使用 annotation 对远程访问的方法代码进行修饰的话,这个模版就能够使用工具自动生成。另外,一些 API 需要使用与程序代码同时维护的附属文件。例如,JavaBeans 需要一个 BeanIn fo Class 与一个 Bean 同时使用/维护,而 EJB 则同样需要一个部署描述符。此时在程序中使用 a
nnotation 来维护这些附属文件的信息将十分便利而且减少了错误。
二、Annotation 工作方式:
在 5.0 版之前的 Java 平台已经具有了一些 ad hoc annotation 机制。比如,使用 transient 修饰符来标识一个成员变量在序列化子系统中应被忽略。而@deprecated 这个 javadoc tag 也是一个 ad hoc annotation 用来说明一个方法已过时。从 Java5.0 版发布以来,5.0 平台提供了一个正式的 annotation 功能:允许开发者定义、使用自己的 annoatation 类型。此功能由一个定义 annotation 类型的语法和一个描述 annotation 声明的语法,读取 annotaion 的 API,一个使用 annotation 修饰的 class 文件,一个 annotation 处理工具(apt)组成。
1annotation 并不直接影响代码语义,但是它能够工作的方式被看作类似程序的工具或者类库,它会反过来对正在运行的程序语义有所影响。annotation 可以从源文件、class 文件或者以在运行时反射的多种方式被读取。当然 annotation 在某种程度上使 javadoc tag 更加完整。一般情况下,如果这个标记对 java文档产生影响或者用于生成 java 文档的话,它应该作为一个 javadoc tag;否则将作为一个 annotation。
三、Annotation 使用方法:
1。类型声明方式:
通常,应用程序并不是必须定义 annotation 类型,但是定义 annotation 类型并非难事。Annotation 类型声明于一般的接口声明极为类似,区别只在于它在 interface 关键字前面使用“@”符号。annotation 类型的每个方法声明定义了一个 annotation 类型成员,但方法声明不必有参数或者
异常声明;方法返回值的类型被限制在以下的范围:primitives、String、Class、enums、annotation 和前面类型的数组;方法可以有默认值。
下面是一个简单的 annotation 类型声明:
清单 1:
/** * Describes the Request-For-Enhancement(RFE) that led * to the presence of the annotated API element. */ public @interface RequestForEnhancement { int id(); String synopsis(); String engineer() default "[unassigned]"; String date(); default "[unimplemented]"; }
2代码中只定义了一个 annotation 类型 RequestForEnhancement。
2。修饰方法的 annotation 声明方式:
annotation 是一种修饰符,能够如其它修饰符(如 public、static、final)一般使用。习惯用法是 annotaions 用在其它的修饰符前面。annotations 由“@+annotation 类型+带有括号的成员-值列表”组成。这些成员的值必须是编译时常量(即在运行时不变)。
A:下面是一个使用了 RequestForEnhancement annotation 的方法声明:
清单 2:
@RequestForEnhancement( id = 2868724, synopsis = "Enable time-travel", engineer = "Mr. Peabody", date = "4/1/3007" ) public static void travelThroughTime(Date destination) { ... }
B:当声明一个没有成员的 annotation 类型声明时,可使用以下方式:
清单 3:
/** * Indicates that the specification of the annotated API element * is preliminary and subject to change. */ public @interface Preliminary { }
3作为上面没有成员的 annotation 类型声明的简写方式:
清单 4:
@Preliminary public class TimeTravel { ... }
【下载地址】
百度网盘链接:https://pan.baidu.com/s/1s-_fNijA2g_IWi-KtbpY0g
提取码:g4ee
相关文章
使用-JFreeChart来创建基于web的图表
XStream使用文档
WebService发布过程及常见问题
webpack实战入门进阶调优分享
weblogic调优参数及监控指标
weblogic节点管理
weblogic管理控制台概述
weblogic-部署和启动
WebLogic-Server-性能及调优-调优-Java-虚拟机
Java 虚拟机(Java virtual machine,简称 JVM)是一种虚拟“执行引擎”实例,可在微处理器上执行 Java 类文件中的字节码。调整 JVM 的方式会影响 Weblogic Server 和应用程序的性能。
Velocity是一个基于java的模板引擎(template engine)。它允许任何人仅仅简单的使用模板语言(template language)来引用由java代码定义的对象。
Velocity 用户手册是帮助页面设计者和内容提供者认识 Velocity 和其简单而功能强大的脚本语言――Velocity 模板语言(VTL)。在手册上的许多例子,都是用 Velocity 插入动态的内容到网页上,但是所有的 VLT 例子都能应用到其他的页面和模板中。
FlashFXP绿色版网盘下载,附激活教程 1781
FlashFxp百度网盘下载链接:https://pan.baidu.com/s/1MBQ5gkZY1TCFY8A7fnZCfQ。FlashFxp是功能强大的FTP工具
Adobe Fireworks CS6 Ansifa绿色精简版网盘下载 1565
firework可以制作精美或是可以闪瞎眼的gif,这在广告领域是需要常用的,还有firework制作下logo,一些原创的图片还是很便捷的,而且fireworks用法简单,配合dw在做网站这一块往往会发挥出很强大的效果。百度网盘下载链接:https://pan.baidu.com/s/1fzIZszfy8VX6VzQBM_bdZQ
navicat for mysql中文绿色版网盘下载 1623
Navicat for Mysql是用于Mysql数据库管理的一款图形化管理软件,非常的便捷和好用,可以方便的增删改查数据库、数据表、字段、支持mysql命令,视图等等。百度网盘下载链接:https://pan.baidu.com/s/1T_tlgxzdQLtDr9TzptoWQw 提取码:y2yq
火车头采集器(旗舰版)绿色版网盘下载 1707
火车头采集器是站长常用的工具,相比于八爪鱼,简洁好用,易于配置。火车头能够轻松的抓取网页内容,并通过自带的工具对内容进行处理。站长圈想要做网站,火车头采集器是必不可少的。百度网盘链接:https://pan.baidu.com/s/1u8wUqS901HgOmucMBBOvEA
Photoshop(CS-2015-2023)绿色中文版软件下载 1823
安装文件清单(共46G)包含Window和Mac OS各个版本的安装包,从cs到cc,从绿色版到破解版,从安装文件激活工具,应有尽有,一次性打包。 Photoshop CC绿色精简版 Photoshop CS6 Mac版 Photoshop CC 2015 32位 Photoshop CC 2015 64位 Photoshop CC 2015 MAC版 Photoshop CC 2017 64位 Adobe Photoshop CC 2018 Adobe_Photoshop_CC_2018 Photoshop CC 2018 Win32 Photoshop CC 2018 Win64