package cn.itcast.test;
import java.lang.reflect.Field;
/*
* 写一个方法
* public void setPropertv(Object obj,String propertvName,Object value){
* }
*
* 此方法可将obj对象中名为propertvName的属性值设置为value
*/
public class Tool {
public void setPropertv(Object obj, String propertvName, Object value)
throws Exception {
// 根据对象获取字节码文件对象
Class c = obj.getClass();
// 获取该对象的propertvName成员变量
Field f = c.getDeclaredField(propertvName);
// 取消访问检查
f.setAccessible(true);
// 给对象的成员变量赋值为指定的值
f.set(obj, value);
}
}
package cn.itcast.test;
public class ToolDemo {
public static void main(String[] args) throws Exception {
Person p = new Person();
Tool t = new Tool();
t.setPropertv(p, "name", "林青霞");
t.setPropertv(p, "age", 27);
System.out.println(p);
System.out.println("--------------");
Dog d = new Dog();
t.setPropertv(d, "sex", '男');
t.setPropertv(d, "price", 12.24f);
System.out.println(d);
}
}
class Dog {
char sex;
float price;
@Override
public String toString() {
return sex + "---" + price;
}
}
class Person {
private String name;
public int age;
public String toString() {
return name + "---" + age;
}
}