黑马程序员技术交流社区

标题: 关于反射的基础题,写一个方法改变private修饰的值 [打印本页]

作者: chen_32768    时间: 2014-11-25 23:31
标题: 关于反射的基础题,写一个方法改变private修饰的值
1、 写一个方法,此方法可将obj对象中名为propertyName的属性的值设置为value.  
public void setProperty(Object obj, String propertyName, Object value){   
}
public class Main {
        public static void main(String[] args) throws NoSuchFieldException,
                        SecurityException, IllegalArgumentException, IllegalAccessException {
                Person p = new Person();
                Person.setProperty(p, "propertyName", "value");
        }
}

class Person extends Object {
        private String propertyName = "abc";

        public String toString() {
                return propertyName;

        }

        public static void setProperty(Object obj, String propertyName, Object value)
                        throws NoSuchFieldException, SecurityException,
                        IllegalArgumentException, IllegalAccessException {
                //反射
                Class c = obj.getClass();
               //得到需要的量
                Field f = c.getDeclaredField("propertyName");
                // Method m = c.getDeclaredMethod(name, parameterTypes);
               //语言校验
                f.setAccessible(true);
                f.set(obj, value);
                System.out.println(obj.toString());
        }
}




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