ReflectTest类:
import java.lang.reflect.Field;
import java.lang.reflect.Method;
public class ReflectTest {
public static void main(String[] args) throws InstantiationException, IllegalAccessException {
/*
* 1.获得要操作的类的对象
*/
Class c = Person.class;
System.out.println(c);
/*
* 2.调用相应的getXXX()方法获取列表
*/
Field [] fields = c.getDeclaredFields();
for(Object o : fields){
System.out.println(o);
}
/*
* 3.使用反射的API来操作这些信息
*/
System.out.println("---------使用反射前---------------------");
//创建对象时,有两种方法
Person p = (Person)c.newInstance();
Person p2 = new Person();
//输出信息
System.out.println("name:" + p.getName() + " age:" + p.getAge());
System.out.println("---------使用反射后---------------------");
//分别对属性name和age进行设置,在设置时要注意setAccessible(true)
fields[0].setAccessible(true);
fields[0].set(p,"tom");
fields[1].setAccessible(true);
fields[1].set(p, 29);
System.out.println("name:" + p.getName() + " age:" + p.getAge());
//获取对象的方法
Method[] method = c.getDeclaredMethods();
for(Object o : method){
System.out.println(o);
}
}
}
Perosn类:
public class Person {
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}