写一个方法实现吧obj对象里的propertyName的属性值设置为value
来源:互联网 发布:java中replaceall 编辑:程序博客网 时间:2024/06/05 00:46
由于方法不确定,属性名也不确定,因此属性的类型也不确定,如果是私有的就无法访问,因此为了解决这个问题我们可以想到万能的反射。
写一个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
阅读全文
0 0
- 写一个方法实现吧obj对象里的propertyName的属性值设置为value
- 写一个方法,此方法可将obj对象中名为propertyName的属性的值设置为value.
- 反射示例3:写一个方法设置对象任意权限的属性的值
- 反射(通过反射写一个通用的设置某个对象的某个属性为指定的值)
- 反射_通过反射写一个通用的设置某个对象的某个属性为指定的值
- 反射-通过反射写一个通用的设置某个对象的某个属性为指定的值
- 为对象的属性设置属性值
- 设置一个对象的属性
- 思考一个问题:如何将map里面的值,映射到一个对象里的属性,不通过手动方式设置!!!
- 将一个类的属性存入MAP中(key为属性名,value为属性值)
- android的属性动画的propertyName--------Property Animation
- obj-c取控件的值value
- redis value为对象的排序、分页的一种实现
- redis value为对象的排序、分页的一种实现
- redis value为对象的排序、分页的一种实现
- js获取对象,数组所有属性值(key)和对应值(value)的方法
- js获取对象,数组所有属性值(key)和对应值(value)的方法
- C#里,把一个对象的属性转成XML
- NuttX 入门笔记1 STM32F4Discovery 移植
- L1-010. 比较大小
- Linux awk指令
- vbox虚拟机使用xshell
- vue 输入框 限定输入金额的范围并且用千分符显示,初始值有格式限制
- 写一个方法实现吧obj对象里的propertyName的属性值设置为value
- 实现水平垂直居中的五种方法
- 119. Pascal's Triangle II待续。。。
- 字符串循环移位
- L1-011. A-B
- 典型的字符串处理代码(algs4)
- FTP(vsftp)服务器的搭建配置以及访问控制
- 学以致用—股价月涨幅的计算
- 在Qtcreator下编译Nginx