java 注解示例
*******************************
示例:使用注解结合反射可以为实例对象赋值
@Retention(RetentionPolicy.RUNTIME)
@interface D{
String value() default "";
}
class Person{
private String name;
private Integer age;
public String getName() {
return name;
}
@D("瓜田李下")
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
@D("24")
public void setAge(Integer age) {
this.age = age;
}
@Override
public String toString() {
return this.name+" "+this.age;
}
}
public class MyTest4 {
public static void main(String[] args) throws Exception {
Class<?> c=Class.forName("hello3.Person");
Person person=(Person)c.getDeclaredConstructor().newInstance();
Method nameMethod=c.getDeclaredMethod("setName", String.class);
if (nameMethod.isAnnotationPresent(D.class)){
D d=nameMethod.getAnnotation(D.class);
nameMethod.invoke(person,d.value());
}
Method ageMethod=c.getDeclaredMethod("setAge", Integer.class);
if (ageMethod.isAnnotationPresent(D.class)){
D d=ageMethod.getAnnotation(D.class);
ageMethod.invoke(person,Integer.valueOf(d.value().toString()));
}
System.out.println(person);
}
}
******************
控制台输出
瓜田李下 24