黑马程序员技术交流社区

标题: 分享代码 [打印本页]

作者: 刘德坤    时间: 2015-10-15 22:30
标题: 分享代码
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;
        }
}





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2