前面都是抄的别人的,发点自己的东西
package 注解.反射读取;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Target(value = ElementType.TYPE)//修饰类
@Retention(value = RetentionPolicy.RUNTIME)
public @interface SxtTable
{
String value();
}
package注解.反射读取;importjava.lang.annotation.ElementType;importjava.lang.annotation.Retention;importjava.lang.annotation.RetentionPolicy;importjava.lang.annotation.Target;//用来说明SXtStudent 里面的属性特性
@Target(value=ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)public @interfaceSxtFiled
{
String columnName();
String type();intlength();
}
package注解.反射读取;
@SxtTable("tb_table")public classSxtStudent
{
@SxtFiled(columnName= "id",type="int",length = 10)private intid;//对属性做了说明,
@SxtFiled(columnName= "sname",type="varchar",length = 10)privateString StudentName;
@SxtFiled(columnName= "age",type="int",length = 3)private intage;public intgetId()
{returnid;
}public void setId(intid) {this.id =id;
}publicString getStudentName() {returnStudentName;
}public voidsetStudentName(String studentName) {
StudentName=studentName;
}public intgetAge() {returnage;
}public void setAge(intage) {this.age =age;
}
}
package 注解.反射读取;
import java.lang.annotation.Annotation;
import java.lang.reflect.Field;
//反射读取ANN
public class DEMO
{
public static void main(String[] args) throws ClassNotFoundException, NoSuchFieldException
{
Class Clazz= Class.forName("注解.反射读取.SxtStudent");//包含对应类的全部信息 包含注解
// Annotation annot[]=Clazz.getAnnotations();//获取注解
// for(Annotation a:annot)
// {
// System.out.println(a);
// }
//直接获得特定的注解
// SxtTable st= (SxtTable) Clazz.getAnnotation(SxtTable.class);
// System.out.println(st);
//获得对应类的属性的注解
Field f=Clazz.getDeclaredField("StudentName");
System.out.println(f);
SxtFiled sxtf=f.getAnnotation(SxtFiled.class);
System.out.println(sxtf);
System.out.println(sxtf.columnName());
System.out.println(sxtf.length());
System.out.println(sxtf.type());
}
}