浅谈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的定义、使用、解析就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。