package com.itheima;
import java.lang.reflect.Field;
/**
* 1、 写一个方法,此方法可将obj对象中名为propertyName的属性的值设置为value. public void
* setProperty(Object obj, String propertyName, Object value){ }
*
* @author 张兆晖
* 思路:
* 创建一个工具类Tool,写一个方法,可将obj对象中名为propertyName的属性的值设置为value.
* 接着自定义一个类,成员变量一个用private修饰
* 然后测试给成员变量赋值
*
*/
public class Test1 {
public static void main(String[] args) throws Exception {
// 创建Person的对象
Person p = new Person();
// 创建Tool工具类的对象
Tool t = new Tool();
// 用setProperty()方法给Person类的两个成员变量赋值
t.setProperty(p, "name", "张三");
t.setProperty(p, "age", 27);
System.out.println(p);
}
}
// 创建一个工具类Tool
class Tool {
// 写一个方法,可将obj对象中名为propertyName的属性的值设置为value.
public void setProperty(Object obj, String propertyName, Object value)
throws Exception {
// 根据对象获取字节码文件对象
Class c = obj.getClass();
// 获取该对象propertyName的成员变量
Field field = c.getDeclaredField(propertyName);
// 取消访问检查
field.setAccessible(true);
// 给对象的成员变量设定为指定的值
field.set(obj, value);
}
}
// 自动一个Person类
class Person {
// name变量设为private
private String name;
// age变量设为public
public int age;
@Override
// 重写一下toString方法.
public String toString() {
return name + "---" + age;
}
}
|
|