浅谈Java中注解Annotation的定义、使用、解析
程序员文章站
2024-03-02 09:32:40
此例子,用于说明如何在java中对“注解 annotation”的定义、使用和解析的操作。注解一般用于自定义开发框架中,至于为什么使用,此处不作过多说明,这里只说明如何使用...
此例子,用于说明如何在java中对“注解 annotation”的定义、使用和解析的操作。注解一般用于自定义开发框架中,至于为什么使用,此处不作过多说明,这里只说明如何使用,以作备记。下面例子已测试,可以正常运行通过。
1、注解自定义。
这里定义两个注解,分别用来注解类和注解属性。
package cc.rulian.ann; import java.lang.annotation.elementtype; import java.lang.annotation.retention; import java.lang.annotation.retentionpolicy; import java.lang.annotation.target; /** * 类注释 */ @retention(retentionpolicy.runtime) @target(elementtype.type) public @interface mytable { public string name() default ""; public string version() default "1"; }
package cc.rulian.ann; import java.lang.annotation.elementtype; import java.lang.annotation.retention; import java.lang.annotation.retentionpolicy; import java.lang.annotation.target; /** * 字段注释 */ @retention(retentionpolicy.runtime) @target(elementtype.field) public @interface myfield { public string name() default ""; //名称 public string type() default ""; //类型 }
2、注解的使用。
说明如何在类中使用自定义注解。
package cc.rulian.ann; import java.util.date; /** * 基础日志 * */ @mytable(name="t_baselog",version="2") public class baselog{ @myfield(name="addtime",type="date") private date log_time; // 时间 @myfield(name="log_level",type="string") private string log_level; // 级别 @myfield(name="message",type="string") private string message; // 日志内容 public date getlog_time() { return log_time; } public void setlog_time(date log_time) { this.log_time = log_time; } public string getlog_level() { return log_level; } public void setlog_level(string log_level) { this.log_level = log_level; } public string getmessage() { return message; } public void setmessage(string message) { this.message = message; } }
3、注解的解析。
说明如何解析注解。
package cc.rulian.ann; import java.lang.reflect.field; /** * 读取注释 */ public class readann { public static void main(string[] args) { // 读取类的注释 baselog obj = new baselog(); // annotation[] arr = obj.getclass().getannotations(); //得到所有注释 mytable table = obj.getclass().getannotation(mytable.class); // 取得指定注释 system.out.println("类注释(name): " + table.name()); system.out.println("类注释(version): " + table.version()); // 读取属性的注释 field[] fields = obj.getclass().getdeclaredfields(); for (field f : fields) { // annotation[] arr2 = f.getannotations(); //得到所有注释 myfield ff = 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的定义、使用、解析就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。