Person.java
public class Person {
private String name;
private int age;
public String school;
public int bir;
public Person() {
}
public Person(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
", school='" + school + '\'' +
", bir=" + bir +
'}';
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getSchool() {
return school;
}
public void setSchool(String school) {
this.school = school;
}
public int getBir() {
return bir;
}
public void setBir(int bir) {
this.bir = bir;
}
public Person(String name, int age, String school, int bir) {
this.name = name;
this.age = age;
this.school = school;
this.bir = bir;
}
public String getName() {
return name;
}
/**
*
* @param name
*/
public void setName(String name) {
this.name = name;
}
public void eat(){
System.out.println("我在吃东西!");
}
public void eat(String which){
System.out.println("我在吃:" + which);
}
}
ReflexDemo02.java
import java.lang.reflect.Field;
import java.sql.SQLOutput;
public class ReflexDemo02 {
public static void main(String[] args) throws Exception {
Class<Person> pC = Person.class;
/* Field[] getFields() */
//获取所有public成员变量
Field[] fields = pC.getFields();
for (Field field : fields) {
System.out.println(field);
}
/* Field getField(String name) */
//获取指定成员变量
Field school = pC.getField("school");
//对该成员变量进行反射操作,反射之前需要实例化对象
Person p = new Person();
System.out.println("反射前数值school:"+p.school);
school.set(p,"湖南怀化学院");
System.out.println("反射设置后school:" + p.getSchool());
/* Field[] getDeclaredFields() */
System.out.println("=================查询所有成员方法=============");
Field[] declaredFields = pC.getDeclaredFields();
for (Field declaredField : declaredFields) {
System.out.println(declaredField);
}
/* Field getDeclaredField(String name) */
Field name = pC.getDeclaredField("name");
/*如果不解除安全设置,就报cannot access a member of class错误*/
name.setAccessible(true);//解除安全设置
name.set(p,"lf");
System.out.println(p.getName());
}
}
输出:
public java.lang.String cn.lwgk.Reflex.Person.school
public int cn.lwgk.Reflex.Person.bir
反射前数值school:null
反射设置后school:湖南怀化学院
=================查询所有成员方法=============
private java.lang.String cn.lwgk.Reflex.Person.name
private int cn.lwgk.Reflex.Person.age
public java.lang.String cn.lwgk.Reflex.Person.school
public int cn.lwgk.Reflex.Person.bir
lf