java反射学习
反射设置对象的属性值
package test11;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
public class test1 {
public static void main(String[] args) throws Exception{
//获取Student类的字节码
Class clazz=Class.forName("test11.Studnet");
//获得构造方法并创建对象
Constructor constructor = clazz.getConstructor();
Studnet studnet=(Studnet)constructor.newInstance();
System.out.println(studnet);
//设置学生对象的各个属性
Field name = clazz.getField("name");
Field age = clazz.getDeclaredField("age");
age.setAccessible(true);//开启暴力反射
name.set(studnet,"半个小歪");
age.set(studnet,18);
//打印学生对象
System.out.println(studnet);
}
}
package test11;
public class Studnet {
public String name;
private int age;
@Override
public String toString() {
return "Studnet{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
public Studnet() {
}
public Studnet(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}