/**
*
*/
package cn.thcic;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
/**
* java反射---获取类的成员变量
* <p>
* Field类封装反射得到的成员变量
* </p>
* by Zhiwang Zhang on 2014年7月21日
*/
public class Test108 {
private int age;
public String addr;
public static void main(String[] args) {
Class classInfomation = Test108.class;
Field[] fieldArr = classInfomation.getFields();
System.out.println("所有public成员变量:" + fieldArr.length);
Field[] fieldArrSec = classInfomation.getDeclaredFields();// 返回所有域,但不包括继承的域
System.out.println("所有成员变量:" + fieldArrSec.length);
try {
// 得到某一公共域
Field field = classInfomation.getField("addr");
Test108 test = (Test108) classInfomation.newInstance();
test.addr = "zzw";
// field.get(obj),返回指定对象上此 Field 表示的字段的值。
System.out.println(field.get(test));
} catch (Exception e) {
e.printStackTrace();
}
// 得到所有域中(包括私有域)的某个域
try {
Field privateField = classInfomation.getDeclaredField("age");
Constructor<Test108> con = classInfomation.getConstructor();
Test108 testSec = (Test108) con.newInstance();
testSec.age = 10;
System.out.println(privateField.get(testSec));
} catch (Exception e) {
e.printStackTrace();
}
}
}