Java Annotation
2015-12-17 17:53
381 查看
一、初识Annotation注解
下面提到的这些注解如果你细心的话是肯定有印象的,我们就从这说起,Java5之后起默认的三个annotation类型。@Override 只能用在方法之上的,用来告诉别人这一个方法是改写父类的。
@Deprecated 建议别人不要使用旧的API的时候用的,编译的时候会用产生警告信息,可以设定在程序里的所有的元素上。
@SuppressWarnings 这一个类型可以来暂时把一些警告信息消息关闭。
这些默认的注解很简单,肯定不能满足各个程序的需要,所以我们需要扩展注解。
二、定制自己的注解
首先我们要了解,自定义注解的语法。1. @Target
表示该注解用于什么地方,可能的 ElemenetType 参数包括: ElemenetType.CONSTRUCTOR 构造器声明 ElemenetType.FIELD 域声明(包括 enum 实例) ElemenetType.LOCAL_VARIABLE 局部变量声明 ElemenetType.METHOD 方法声明 ElemenetType.PACKAGE 包声明 ElemenetType.PARAMETER 参数声明 ElemenetType.TYPE 类,接口(包括注解类型)或enum声明
2. @Retention
表示在什么级别保存该注解信息。可选的 RetentionPolicy 参数包括:SOURCE:信息只会保留在程序源码里,源码如果经过了编译之后,Annotation的数据就会消失,并不会保留在编译好的.class文件里面。
ClASS:信息保留在程序源码里,同时也会保留在编译好的.class文件里面,在执行的时候,并不会把这一些信息加载到虚拟机(JVM)中去。系统默认值是CLASS。
RUNTIME:表示在源码、编译好的.class文件中保留信息,在执行的时候会把这一些信息加载到JVM中去的。
举一个例子,如@Override里面的Retention设为SOURCE,编译成功了就不要这一些检查的信息;@Deprecated里面的 Retention设为RUNTIME,表示除了在编译时会警告我们使用了哪个被Deprecated的方法,在执行的时候也可以查出该方法是否被 Deprecated。
3. @Documented
@Documented的目的就是让这一个Annotation类型的信息能够显示在javaAPI说明文档上;没有添加的话,使用javadoc生成API文档的时候就会找不到这一个类型生成的信息。
4. @Inherited
如果需要把Annotation的数据继承给子类,那么就会用到@Inherited这一个Annotation类型. 综上所述,见例子就明白了。@Target(ElementType.METHOD) @Retention(RetentionPolicy.RUNTIME) @Documented @Inherited public @interface VisitorRole { String value(); }
三、注解之Hello World
说明:所有的Annotation继承java.lang.annotation接口。
只能用public或默认(default)这两个访问权修饰.例如,String value();这里把方法设为defaul默认类型。
参数成员只能用基本类型byte,short,char,int,long,float,double,boolean八种基本数据类型和 String,Enum,Class,annotations等数据类型,以及这一些类型的数组.例如,String value();这里的参数成员就为String.
如果只有一个参数成员,最好把参数名称设为”value”,后加小括号.例:上面的例子就只有一个参数成员。
相关文章推荐
- Java synchronized
- 【Java并发编程实战】-----“J.U.C”:AQS分析(一)
- mac下eclipse安装lombok
- JavaWEB
- Windows环境下如何方便快捷的执行jar文件
- 【Java并发编程实战】----- AQS(一):简介
- JAVA通过JXL工具操作EXCEL文件
- Java开启定时任务线程
- eclipse搭建maven SpringMVC项目
- JAVA获取classPath的方法
- 关于java代码中的位运算的使用
- <s:hidden>标签的使用
- 用JAVA代码获取Weblogic配置的JNDI 数据源连接
- Java ftp实现文件的上传和下载ftp,sftp sun.net.ftp.FtpProtocolException:Welcome message: SSH-2.0-OpenSSH_5.1
- spring浅谈
- java 简单解析wsdl
- struts2的细节
- SpringMVC中的分页查询
- myeclipse6.5 代码自动提示
- 数字大小写转换