运用反射机制实现改变对象的属性值
此处运用反射机制实现改变对象的属性值的功能。
以下代码实现功能为:
对一个对象中属性类型为String的字段,如果其值不是为"cloud",则将其改成"cloud"。我觉得实现的功能很简单,但很有指导性的意义。读者慢慢体会吧。
?
ReflectBean代码:
?
ReflectTest代码:
package com.cloud.reflect;import java.lang.reflect.Field;public class ReflectTest {public static void main(String[] args) throws Exception {ReflectBean reflect = new ReflectBean("chris", "cloud");changeFieldValue(reflect);System.out.println(reflect.toString());}public static void changeFieldValue(Object obj) throws Exception {Field[] fields = obj.getClass().getDeclaredFields();for (Field field : fields) {//由于字段是private类型,为了能够访问,进行“暴力”反射设置field.setAccessible(true);//此处应该用“==”为好,因为字节码只有一份if (field.getType() == String.class) {String oldStr = (String) field.get(obj);if (!"cloud".equals(oldStr)) {field.set(obj, "cloud");}}}}}?
?
?