public class testAnnotation {
public static void main(String[] args) throws ClassNotFoundException, NoSuchFieldException {
Class c1 = Class.forName("test01.Student");
System.out.println(c1);
Annotation[] annotations = c1.getAnnotations();
for (Annotation annotation : annotations) {
System.out.println(annotation);
}
//获得注解的value值
AnnoLi AnnoLi = (AnnoLi)c1.getAnnotation(AnnoLi.class);
System.out.println(AnnoLi.value());
System.out.println("*************************");
//获得类指定的注解
Field f = c1.getDeclaredField("pwd");
AnnoLi2 AnnoLi2 = f.getAnnotation(AnnoLi2.class);
System.out.println(AnnoLi2.cid());
System.out.println(AnnoLi2.cpwd());
}
}
@AnnoLi("class1")
class Student{
@AnnoLi2(cid=1,cpwd="123")
private int id;
@AnnoLi2(cid=1,cpwd="456")
private String pwd;
public Student(int id, String pwd) {
this.id = id;
this.pwd = pwd;
}
public Student() {
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
}
//类名的注解
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@interface AnnoLi{
String value();
}
//属性的注解
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
@interface AnnoLi2{
int cid();
String cpwd();
}
运行结果:
class test01.Student
@test01.AnnoLi(value=class1)
class1
*************************
1
456