通过反射修改指定对象字段值的通用方法
2012-06-03 19:01
344 查看
package question5; import java.lang.reflect.Field; /* * 第五题 * 写一个方法,public void setProperty(Object obj, String propertyName, Object value){}, * 此方法可将obj对象中名为propertyName的属性的值设置为value。 * * */ public class SetObjectProperty { public static void main(String[] args) throws Exception { A obj = new A(); //将对象中的a变量赋值为5,默认为0 setProperty(obj, "a", 5); //输出a的值 System.out.println(obj.a); //将对象中的b变量赋值为10.默认为5 setNotAccessibleProperty(obj, "b", 10); //输出b的值 System.out.println(obj.b); } /** * 对给定对象obj的propertyName指定的成员变量进行赋值 * 赋值为value所指定的值 * * 该方法不能访问私有成员 */ public static void setProperty(Object obj, String propertyName, Object value) throws Exception { Class<?> clazz = obj.getClass(); Field field = clazz.getField(propertyName); field.set(obj, value); } /** * 对给定对象obj的propertyName指定的成员变量进行赋值 * 赋值为value所指定的值 * * 该方法可以访问私有成员 */ public static void setNotAccessibleProperty(Object obj, String propertyName, Object value) throws Exception { Class<?> clazz = obj.getClass(); Field field = clazz.getDeclaredField(propertyName); //赋值前将该成员变量的访问权限打开 field.setAccessible(true); field.set(obj, value); //赋值后将该成员变量的访问权限关闭 field.setAccessible(false); } //用来测试的类 public static class A { public int a = 0; private int b = 5; } }
相关文章推荐
- 反射_通过反射写一个通用的设置某个对象的某个属性为指定的值
- entity framework不查数据库修改或排除指定字段集合通用方法
- 【反射】通过反射(包括父对象)获取指定字段的值
- 利用反射通用的设置某个对象的某个字段为指定的值
- java中反射机制通过字节码文件对象获取字段和函数的方法
- 通过反射修改类的私有字段值,调用私有方法
- 通过反射修改类的私有字段值,调用私有方法
- 利用反射通用的设置某个对象的某个字段为指定的值
- 反射(通过反射写一个通用的设置某个对象的某个属性为指定的值)
- 反射-通过反射写一个通用的设置某个对象的某个属性为指定的值
- java中反射机制通过字节码文件对象获取字段和函数的方法
- 通过java反射获取任意对象的字段名及字段值
- [反射]通用方法 命名空间,类,对象,属性
- 通过反射调用類的方法,屬性,字段,索引器(2種方法)
- PHP通过反射实现对象的成员方法调用
- EntLib Validation Application Block 01 通过配置文件,自行指定对象自身方法进行验证
- Java通过反射机制动态设置对象属性值的方法
- Yii通过Ajax修改字段值的方法
- 通过反射机制创建一个构造方法中参数数量可变的对象
- 反射创建对象,执行指定方法