Field類中用封裝類的字段珊膜,可以用來查詢字段的類型以及設(shè)置或讀取字段的值。常用的方法有:
lField getField(String s) ?只能獲取類中及其父類公有的公有字段
lField getDeclaredField(String s) 獲取該類中任意字段宣脉,包括私有
lsetAccessible(true) 如果是私有字段车柠,要先將該私有字段進(jìn)行取消權(quán)限檢查的能力。也稱暴力訪問脖旱。
lset(Object obj, Object value) 將指定對象變量上此Field對象表示的字段設(shè)置為指定的新值堪遂。
lObject get(Object obj); 返回指定對象上Field表示的字段的值。:
示例:
class Student {
String name;
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;
}
@Override
public String toString() {
return "Student [name=" + name + ", age=" + age + "]";
}
}
public class Test {
public static void main(String[] args) throws Exception {
Class clazz = Class.forName("weizhang.Student");
Student stu = (Student) clazz.newInstance();
Field[] fs = clazz.getFields();
for (Field f : fs) {
System.out.println(f);
}
Field fage = clazz.getDeclaredField("age");
Field fname = clazz.getDeclaredField("name");
fage.set(stu, 20);
System.out.println(fage.get(stu));
fname.setAccessible(true);
fname.set(stu, "張三");
System.out.println(fname.get(stu));
}
}