该方法通过扩大类属性的访问权限后直接操作属性,所以在Person类中并不需要写getter和setter方法,但是在实际开发中,都需要使用getter和setter方法。
Person.java:
package test;
public class Person {
private String name;
private int age;
public Person(){
}
}
Demo.java:
package test;
import java.lang.reflect.Field;
public class Demo {
public static void main(String[] args) throws Exception{
Class<?> c=null;
Object obj=null;
try {
c=Class.forName("test.Person");
} catch (ClassNotFoundException e1) {
e1.printStackTrace();
}
try {
obj=c.newInstance();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
Field nameField=null;
Field ageField=null;
nameField=c.getDeclaredField("name");
ageField=c.getDeclaredField("age");
nameField.setAccessible(true);
nameField.set(obj,"软件工程");
ageField.setAccessible(true);
ageField.set(obj, 20);
System.out.println("姓名:"+nameField.get(obj));
System.out.println("年龄:"+ageField.get(obj));
}
}