本帖最后由 孔肖 于 2012-9-23 18:01 编辑
这个方法是将任意对象中的所有String字段中的'b'-->'B'
疑惑的地方用红色标出了,请各位能讲的简单详细深入一点!谢谢!
public static void changeStringValue(Object obj) throws Exception
{
Field[] fields = obj.getClass().getFields();
for(Field field : fields)
{
// 张老师说这里是同一份字节码,我的疑惑是获取到的字节码和String类的字节码在内存中时如何存放的,对于 "=="的比较又是如何比较的?
if(field.getType() == String.class)
{
// 这里要注意类型转换 obj --> String,上面已经比较了类型,为什么这里还要类型转换?
String oldValue = (String)field.get(obj);
String newValue = oldValue.replace('b', 'B');
field.set(obj, newValue);
}
}
}
|