http://www.mysjtu.com/page/M0/S208/208632.html
Field类方法:
Get(Object obj) 查看指定obj域 的值
Set(Object obj,Object value) 设置指定obj 的值为value
因为Java安全机制只允许反射机制查看任意对象包含哪些域<字段>,而不允许读取他们的值..所以想读取他们的值,,需调用AccessibleObject的SetAccessible(Boolean falg); 为单个域取消检查
SetAccessible(AccessibleObject[] array,Boolean falg) 为一组域取消检查
<AccessibleObject 是 Field Mothd Constructor 超类>
一个简单的更改指定对象域<字段>值的例子
实体类:Animal.java
package com.accp.entity;
public class Animal {
private String name;
private String age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public Animal() {
}
public Animal(String name, String age) {
this.name = name;
this.age = age;
}
}
Test.java
package com.accp.test;
import java.lang.reflect.Field;
import com.accp.entity.Animal;
public class FieldTest {
public static void main(String[] args) {
Animal animal = new Animal("xw","12");
Class cls = animal.getClass();
try {
Field xw = cls.getDeclaredField("name"); //得到本类名字为name 字段
xw.setAccessible(true); //设置可以访问指定对象的私有域
xw.set(animal, "xz"); //将用set(object obj,object value)方法为指定对象域设置值
Object o = xw.get(animal);
System.out.println(o.toString());
} catch (SecurityException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (NoSuchFieldException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}