Java Annotation入门

摘要:

本文针对java初学者或者annotation初次使用者全面地说明了annotation的使 用方法、定义方式、分类。初学者可以通过以上的说明制作简单的annotation程 序,但是对于一些高级的annotation应用(例如使用自定义annotation生成 javabean映射xml文件)还需要进一步的研究和探讨。涉及到深入annotation的内 容,作者将在后文《Java Annotation高级应用》中谈到。

同时,annotation运行存在两种方式:运行时、编译时。上文中讨论的都是在 运行时的annotation应用,但在编译时的annotation应用还没有涉及,

一、为什么使用Annotation:

在JAVA应用中,我们常遇到一些需要使用模版代码。例如,为了编写一个JAX -RPC web service,我们必须提供一对接口和实现作为模版代码。如果使用 annotation对远程访问的方法代码进行修饰的话,这个模版就能够使用工具自动 生成。

另 外,一些API需要使用与程序代码同时维护的附属文件。例如,JavaBeans 需要一个BeanInfo Class与一个Bean同时使用/维护,而EJB则同样需要一个部署 描述符。此时在程序中使用annotation来维护这些附属文件的信息将十分便利而 且减少了错误。

二、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)组成。

annotation并不直接影响代码语义,但是它能够工作的方式被看作类似程序的 工具或者类库,它会反过来对正在运行的程序语义有所影响。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]";
   }

代码中只定义了一个annotation类型RequestForEnhancement。

时间: 2025-01-27 02:34:35

Java Annotation入门的相关文章

JAVA annotation入门基础_java

一. 最常见的annotation•@Override:用在方法之上,用来告诉别人这一个方法是改写父类的•@Deprecated:建议别人不要使用旧的API的时候用的,编译的时候会用产生警告信息,可以设定在程序里的所有的元素上. •@SuppressWarnings:暂时把一些警告信息消息关闭•@Entity:表示该类是可持久化的类 二. 设计一个自己的Annotation先看代码再讲话1. 只有一个参数的Annotation实现 复制代码 代码如下: package chb.test.anno

Java4Android之Java+Annotation入门

对java的Anotation还是不理解,希望看完这个贴子能够理解,Mark一下,明天再看.困了. http://wenku.baidu.com/link?url=eWzdJ4sDjnYA_OymO5JKBwmp97dhdZsCMpnnzN0G2l5eAVKRq7LujRCsIcRRt5B9ixVxDXLdEjycHvB5Kp7G3uLqaqJuF8fF9DgdRIdeLrS

学习教程:Java Annotation 高级应用

高级|教程 前言: 前不久在matrix上先后发表了<java annotation 入门>.<java annotation 手册>两篇文章,比较全面的对java annotation的语法.原理.使用三方面进行了阐述.由于<入门>中的简单例程虽然简单明了的说明了annotation用法,但给大家的感觉可能是意犹未见,所以在此行文<java annotation高级应用>,具体实例化解释annotation和annotation processing to

Java Annotation手册

前言: 在上篇文章<Java Annotation入门>中概要性的介绍了Annotation的定义.使用,范围涵盖较广,但是深度不够.所以作者在<Java Annotation入门>后,继续整理了Annotation的概念和知识点,与喜欢research的朋友们共享. 阅读提示:文中提到的程序成员或者程序元素是一个概念,指组成程序代码的单元:如类.方法.成员变量. 一.Annotation究竟是什么? Annotation提供了一条与程序元素关联任何信息或者任何元数据(metada

Java Annotation高级应用

前言: 前不久在matrix上先后发表了<java annotation 入门>.<java annotation 手册>两篇文章,比较全面的对java annotation的语法.原理.使用三方面进行了阐述.由于<入门>中的简单例程虽然简单明了的说明了annotation用法,但给大家的感觉可能是意犹未见,所以在此行文<java annotation高级应用>,具体实例化解释annotation和annotation processing tool(APT

java从入门到卖肠粉系列

java从入门到卖肠粉系列 注:本教程只是从JAVA基础开始,绝对不会跟公司有任何利益冲突,更不会出现一行公司项目的代码 QQ群:9547527 推荐用360,百度去上传太慢 360网盘:https://yunpan.cn/cSrk4v28di8UR 访问密码 982c 百度云:http://pan.baidu.com/s/1c16JAY8 java从入门到卖肠粉系列(solq)lesson1[JAVA是什么]java从入门到卖肠粉系列(solq)lesson2[部署开发环境]java从入门到卖

Java Annotation认知:包括框架图、详细介绍和示例说明

Java Annotation是JDK5.0引入的一种注释机制. 网上很多关于Java Annotation的文章,看得人眼花缭乱.Java Annotation本来很简单的,结果说的人没说清楚:弄的看的人更加迷糊. 我按照自己的思路,对Annotation进行了整理.理解 Annotation 的关键,是理解Annotation的语法和用法,对这些内容,我都进行了详细说明:理解Annotation的语法和用法之后,再看Annotation的框架图,可能有更深刻体会.废话就说这么多,下面开始对A

Java Annotation详解(二): 反射和Annotation

前面一篇文<Java Annotation详解(一): 理解和使用Annotation>中,我们或许会觉得,Annotation注释其实并没有多大的作用,除了几个内建的Annotation偶尔为了消除警告会使用下,自定义Annotation大家在实际的开发中应该都没有用过.其实呢,我在毕业后一年的工作里,也从未自定义使用过Annotation,只是在多处开发中使用过注释方便的内容,比如Servlet,Spring以及一些优秀的Android开源类库. 如果从简单的开发来讲,大家基本会使用一些开

Java Annotation 及几个常用开源项目注解原理简析

文简单介绍下 Annotation 示例.概念及作用.分类.自定义.解析,并对几个 Android 开源库 Annotation 原理进行简析. PDF 版: Java Annotation.pdf, PPT 版:Java Annotation.pptx, Keynote 版:Java Annotation.key 一.Annotation 示例 Override Annotation Java 1 2 @Override public void onCreate(Bundle savedIns