快速业务通道

Java实战篇:设计自己的Annotation - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-18
八种类型.

举几个正确的例子:

@Target(ElementType.METHOD) @Target(value=ElementType.METHOD) @Target(ElementType.METHOD,ElementType.CONSTRUCTOR)

具体参考一下javadoc文档

上面一下1和2的源文件,它们都使用了@Documented,@Documented的目的就是让这一个Annotation类型的信息能够显示在javaAPI说明文档上;没有添加的话,使用javadoc生成API文档的时候就会找不到这一个类型生成的信息.

另外一点,如果需要把Annotation的数据继承给子类,那么就会用到@Inherited这一个Annotation类型.

Java实战篇:设计自己的Annotation(3)

时间:2011-03-05 Javaeye 江南白衣

第三部分:下面讲的设计一个最简单的Annotation例子,这一例子共用四个文件;

1、Description.java

代码

package lighter.javaeye.com; import java.lang.annotation.Documented; 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) @Documented public @interface Description {   String value(); }

说明:所有的Annotation会自动继承java.lang.annotation这一个接口,所以不能再去继承别的类或是接口.

最重要的一点,Annotation类型里面的参数该怎么设定:

第一,只能用public或默认(default)这两个访问权修饰.例如,String value();这里把方法设为defaul默认类型.

第二,参数成员只能用基本类型byte,short,char,int,long,float,double,boolean八种基本数据类型和String,Enum,Class,annotations等数据类型,以及这一些类型的数组.例如,String value();这里的参数成员就为String.

第三,如果只有一个参数成员,最好把参数名称设为"value",后加小括号.例:上面的例子就只有一个参数成员.

2、Name.java

代码

package lighter.javaeye.com; import java.lang.annotation.Documented; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; //注意这里的@Target与@Description里的不同,参数成员也不同 @Target(ElementType.METHOD) @Retention(RetentionPolicy.RUNTIME) @Documented public @interface Name {   String originate();   String community(); }

3、JavaEyer.java

代码

package lighter.javaeye.com; @Description("javaeye,做最棒的软件开发交流社区") public class JavaEyer {   @Name(originate="创始人:robbin",community="javaEye")   public String getName()   {    return null;   }   @Name(originate="创始人:江南白衣",community="springside")   public String getName2()   {    return "借用两位的id一用,写这一个例子,请见谅!";   } }

Java实战篇:设计自己的Annotation(4)

时间:2011-03-05 Javaeye 江南白衣

4、最后,写一个可以运行提取JavaEyer信息的类TestAnnotation

代码

package lighter.javaeye.com; import java.lang.reflect.Method; import java.util.HashSet; import java.util.Set; public class TestAnnotation {   /**   * author lighter   * 说明:具体关天Annotation的API的用法请参见javaDoc文档   */   public static void main(String[] args) throws Exception {    String CLASS_NAME = "lighter.javaeye.com.JavaEyer";    Class test = Class.forName(CLASS_NAME);    Method[]

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号