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;
}
}