Field类中用封装类的字段,可以用来查询字段的类型以及设置或读取字段的值。常用的方法有:
l Field getField(String s) 只能获取类中及其父类公有的公有字段
l Field getDeclaredField(String s) 获取该类中任意字段,包括私有
l setAccessible(true) 如果是私有字段,要先将该私有字段进行取消权限检查的能力。也称暴力访问。
l set(Object obj, Object value) 将指定对象变量上此Field对象表示的字段设置为指定的新值。
l Object 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)); } } |
|