浅谈Java中注解Annotation的定义、使用、解析
此例子,用于说明如何在Java中对“注解Annotation”的定义、使用和解析的操作。注解一般用于自定义开发框架中,至于为什么使用,此处不作过多说明,这里只说明如何使用,以作备记。下面例子已测试,可以正常运行通过。
1、注解自定义。
这里定义两个注解,分别用来注解类和注解属性。
packagecc.rulian.ann; importjava.lang.annotation.ElementType; importjava.lang.annotation.Retention; importjava.lang.annotation.RetentionPolicy; importjava.lang.annotation.Target; /** *类注释 */ @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.TYPE) public@interfaceMyTable { publicStringname()default""; publicStringversion()default"1"; }
packagecc.rulian.ann; importjava.lang.annotation.ElementType; importjava.lang.annotation.Retention; importjava.lang.annotation.RetentionPolicy; importjava.lang.annotation.Target; /** *字段注释 */ @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.FIELD) public@interfaceMyField{ publicStringname()default"";//名称 publicStringtype()default"";//类型 }
2、注解的使用。
说明如何在类中使用自定义注解。
packagecc.rulian.ann; importjava.util.Date; /** *基础日志 * */ @MyTable(name="T_BaseLog",version="2") publicclassBaseLog{ @MyField(name="addTime",type="Date") privateDatelog_time;//时间 @MyField(name="log_level",type="String") privateStringlog_level;//级别 @MyField(name="message",type="String") privateStringmessage;//日志内容 publicDategetLog_time() { returnlog_time; } publicvoidsetLog_time(Datelog_time) { this.log_time=log_time; } publicStringgetLog_level() { returnlog_level; } publicvoidsetLog_level(Stringlog_level) { this.log_level=log_level; } publicStringgetMessage() { returnmessage; } publicvoidsetMessage(Stringmessage) { this.message=message; } }
3、注解的解析。
说明如何解析注解。
packagecc.rulian.ann; importjava.lang.reflect.Field; /** *读取注释 */ publicclassReadAnn { publicstaticvoidmain(String[]args) { //读取类的注释 BaseLogobj=newBaseLog(); //Annotation[]arr=obj.getClass().getAnnotations();//得到所有注释 MyTabletable=obj.getClass().getAnnotation(MyTable.class);//取得指定注释 System.out.println("类注释(name):"+table.name()); System.out.println("类注释(version):"+table.version()); //读取属性的注释 Field[]fields=obj.getClass().getDeclaredFields(); for(Fieldf:fields) { //Annotation[]arr2=f.getAnnotations();//得到所有注释 MyFieldff=f.getAnnotation(MyField.class);//取得指定注释 if(ff!=null) { System.out.println("属性("+f.getName()+"):"+ff.name()+"--"+ff.type()); } } } }
4、解析输出结果。
类注释(name):T_BaseLog
类注释(version):2
属性(log_time):addTime--Date
属性(log_level):log_level--String
属性(message):message--String
以上这篇浅谈Java中注解Annotation的定义、使用、解析就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。