1、Class对象获取成员变量:
Class类的常用方法:


创建Person类:
package pers.reflect.person;
public class Person {
private String name;
private int age;
public String hobby;
public String height;
protected String sex;
String address;
public Person(){
}
public Person(String name,int age){
this.name=name;
this.age=age;
}
@Override
public String toString() {
return "Person [name=" + name + ", age=" + age + ", hobby=" + hobby
+ ", height=" + height + ", sex=" + sex + ", address=" + address
+ "]";
}
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;
}
}
import java.lang.reflect.Field;
import pers.reflect.person.Person;
public class ReflectDemo {
public static void main(String[] args) throws SecurityException,
NoSuchFieldException, IllegalArgumentException,
IllegalAccessException {
Class c = Person.class;
System.out.println("getFields(),获取公共的成员变量:");
Field[] fields = c.getFields();
for (Field field : fields) {
System.out.println(field);
}
System.out.println("getField(),获取指定的公共的成员变量:");
Field hobbyField = c.getField("hobby");
System.out.println(hobbyField);
System.out.println("getDeclaredFields(),获取所有的成员变量,与修饰符无关。");
Field[] fields1 = c.getDeclaredFields();
for (Field field : fields1) {
System.out.println(field);
}
System.out.println("获取私有的指定的成员变量");
Field nameField = c.getDeclaredField("age");
System.out.println(nameField);
}
}
2、Field类的常用方法:
(1)返回变量的类型:

(2)返回属性的名字:
