Field[] fields = obj.getClass().getDeclaredFields();这个语句表示获得obj对象里所有字段也就是成员属性的Field的对象所组成的数组.
for (Field f : fields) {--这里为增强for循环遍历所有的Filed对象,
if (f.getType() == String.class) {--而getType方法是获得该Field对象所对应字段的类型的.class对象,(而obj里有Integer.class和String.class),而你要改的只是字符串,所以才需要给定这个条件,当其类型为String.class时,做以下修改
String oldValue = (String) f.get(obj);//用f.get(obj)将String成员属性的值得到,f.get(obj),返回值是Object,所以要强转
String newValue = oldValue.replace('b', 'a');//用替换方法将'b',换成'a',得到新的替换好的字符串
f.set(obj, newValue);//再把新的字符串值用set方法赋值给成员属性
}
遍历完一遍后,就会把obj里所有String类的成员属性的值修改成功
|