写一个方法实现吧obj对象里的propertyName的属性值设置为value
2017-08-05 23:20
801 查看
由于方法不确定,属性名也不确定,因此属性的类型也不确定,如果是私有的就无法访问,因此为了解决这个问题我们可以想到万能的反射。
写一个setProperty方法达到我们的效果,可以被很多类进行调用:
接下来我们来调用一下这个方法,测试结果是否为对的。
新建一个Test类,编写测试代码;还有一个Student类作为需要改变的对象。
写一个setProperty方法达到我们的效果,可以被很多类进行调用:
public class Demo{ public void setProperty(Object obj,String propertyName,Object value) throws SecurityException, NoSuchFieldException, IllegalArgumentException, IllegalAccessException{ //获得对象obj的字节码文件对象 Class c = obj.getClass(); //获得propertyName字段 Field field = c.getDeclaredField(propertyName); field.setAccessible(true); field.set(obj,value); //设置obj对象的field字段的值为value } }
接下来我们来调用一下这个方法,测试结果是否为对的。
新建一个Test类,编写测试代码;还有一个Student类作为需要改变的对象。
class Student{ String name; private int age; @Override public String toString() { return name + "---" + age; } } public class Test { public static void main(String[] args) throws SecurityException, IllegalArgumentException, NoSuchFieldException, IllegalAccessException { Student s = new Student(); Demo demo = new Demo(); demo.setProperty(s, "name", "梨梨"); demo.setProperty(s, "age", 21); System.out.println(s); } }
输出为:梨梨---21
相关文章推荐
- 写一个方法,此方法可将obj对象中名为propertyName的属性的值设置为value.
- Map接口及其重要实现类的方法总结:从HashMap中放入,查找,删除一个对象,并将全部value放入到一个数组中;获得HashMap的全部数据
- js使用原型实现继承与new一个新对象的方法
- js 获取和设置css3 属性值的实现方法
- 同一个tomcat APP中的 Log4j 的App root System property 不能相同,需要设置不同,不然会出现以下错误。解决方法在错误中标明了。
- 使用反射+缓存+委托,实现一个不同对象之间同名同类型属性值的快速拷贝
- 使用MVC中的HtmlHelper对象的ActionLink方法,实现一个Javascript:void(0)效果,去调用一个JS方法
- 判断一个对象是否实现了某方法,而非继承而来
- JavaScript数组对象实现增加一个返回随机元素的方法
- struts2 <s:textfield> 标签与<s:property>标签value值设置为action属性值或者对象的属性值
- 编写一个类,在main方法中定义一个Map对象(采用泛型),加入若干个对象,然后遍历并打印出各元素的key和value。
- 实现一个对象验证库系列 -- 3) Fluent以及扩展方法实现 (请大神批评)
- 根据动态配置来提交对象属性值和设置属性值实现
- 要求顺序循环队不损失一个空间,全部能够得到有效利用,试采用设置标志位tag的方法解决“假溢出”问题,实现顺序循环队列算法
- 写一个方法进行各种属性的更新,而不要每个界面设置改变都改变一个属性。就是点击应用或确定按钮时调用这个更新属性的方法,遍历所有(控制对象属性的)界面控件的状态(值),进行属性修改和刷新。
- js获取对象,数组所有属性值(key)和对应值(value)的方法
- 使用hadoop命令rcc生成Record 一个简单的方法来实现自己的定义writable对象
- ifstream的对象 ifs 打开一个文件,关闭后,再用ifs打开一个文件的实现方法
- 【Java】【TIJ】实现一个类:不允许用构造方法来直接创建类实例(对象)
- (精)1754 另一种方法实现线段树(这个里面没有用到value,但是添加了一个max)