Reference URL:
http://www.bluedash.net/spaces/Web%E5%BC%80%E5%8F%91%E6%95%99%E7%A8%8B2%EF%BC%8DJava%20Annotation
1. Annotation是什么?
如果您使用Java编写过一些程序,那么您可能已经接触过这一特性了。比如JavaDoc语法中使用的@return,@param这些就是Java标记。又比如说,大家经常用到的用来抑制Java编译器警告信息的@SuppressWarning标记,以及标识某方法或某类过期的@Deprecated标记。从Java 1.5版本开始,用户可以自已制作各种标记。 Spring Framework已经预定义了很多标记, 比如@Autowired.
核心提示:
Java Annotation(中文翻译成"标记"或"注解"),
A. 使用位置:
是放置在Package, Class, Interface, Class field, Class method, Method parameter前的一个带@的字符串。
B. 本质:
它也被称为元数据, 为我们在代码中添加信息提供了一种形式化的方法,使我们可以在稍后某个时刻(编译前、编译时、运行时)非常方便地使用这些数据。
C. 用途:
编写Annotation处理器。如果没有用来读取注解的工具,那Annotation也不会比注释更有用。使用Annotation的过程中,很重要的一个部分就是创建与使用Annotation处理器。Java SE5扩展了反射机制的API,以帮助程序员构造这类工具。比如Spring Framework肯定利用了反射机制编写了对@Autowired的处理代码,达到Auto wired的目的。(不同的Annotation有不同的目的,其处理器代码实现也千差万别,因此,一般没有必要去深究处理器代码实现,了解特定Annotation的用法就可以了)
D. 好处:
最大的好处就是这一特性使得代码之间的耦合度变得非常之低
2. 如何自定义Annotation类
定义Annotation类有点类似于定义Java接口类interface,但和一般的接口类比起来,interface前面多了一个@
import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) public @interface MyAnnotation { String value(); }
i. Annotation类的属性
String value()这个写法是@interface中一个比较独特的地方。它实际上定义的不并是标记类的一个方法,而是标记类的一个属性
ii. Annotation类的@Target标记
指定此标记的作用域:
TYPE - 说明此标记可以用在Class、Interface、Enum、Annotation之上
FIELD - 可用于类的属性之上
METHOD - 用于函数
PARAMETER - 用于函数的参数
CONSTRUCTOR - 用于构造方法
PACKAGE - 用于包
iii. Annotation类的@Retention标记
指定我们所制作的标记的生命周期:
SOURCE - 代表此标记的仅在代码编译前存活。比如@Deprecated,仅在编译前提供一些提示信息。在编译时,这些标记并不会编译到class文件中 ( Annotation is discarded by the compiler )
CLASS - 这类标记会编译到class文件中,但不会成为程序的一部分,也不可以通过代码在运行时调用到 (Annotation is stored in the class file, but ignored by the VM)
RUNTIME - 这类标记将成为代码的一部分,并会在实际运行时起到作用 (Annotation is stored in the class file and read by the VM)
相关推荐
JDK5.0 - Java Annotation 介绍 (ppt格式)
JAVA Annotation学习示例 的一个简单示例 有源码 也有相关博客说明
java annotation 手册.doc,java annotation 手册.doc,java annotation 手册.doc
Java Annotation注解技术
Java Annotation的讲解和例子~~~
本文针对java初学者或者annotation初次使用者全面地说明了annotation的使用方法、定义方式、分类。初学者可以通过以上的说明制作简单的annotation程序,但是对于一些高级的annotation应用(例如使用自定义annotation...
Java Annotation详解 Java Annotation详解 Java Annotation详解
struts 拦截器,扩展,以及java annotation 这个是我学习所用,放在此处,作为中转。
JavaAnnotation必须掌握的特性Java开发Java经验技巧共6页.pdf.zip
java annotation手册 关于annotation是什么东西,百度一下会有很多关于它的描述,在这里就不用再copy了,我们还是以一个示例开始吧,在开始示例之前,我们先来一个小故事。
Java Annotation入门,本文初步告诉你怎么使用java anotatin
NULL 博文链接:https://xing-kenny.iteye.com/blog/1338865
如果你想知道java annotation是什么?你可以看看
java annotation 从JDK5.0后提供的功能。里面包含的实例,我是为了学习这个,所以放到这个上面作为中转。从别人博客里面摘取,博客地址里面附有。
javaAnnotation.pdf
Java Annotation学习整理
JavaAnnotation实例.docx