A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 一碗小米周 于 2013-12-9 10:44 编辑
  1. import java.lang.reflect.Field;
  2. //编写一个给出指定类,并将此类中的String类型变量的值中的a字符换成b
  3. public class Test2 {
  4.         public static void main(String[] args) throws Exception {
  5.                 replaceValue(new Ojb());
  6.                 System.out.println(new Ojb());
  7.         }

  8.         private static void replaceValue(Object ojb) throws Exception {
  9.                
  10.                 Class clazz = ojb.getClass();
  11.                 Field[] fields = clazz.getFields();
  12.                 for(Field field : fields){
  13.                         if(field.getType()==String.class){
  14.                                 String oldValue = (String) field.get(ojb);
  15.                                 String newValue = oldValue.replace('a','b');
复制代码
这里的结果为什么并没有改变呢?求解释。谢谢各位了。

评分

参与人数 1技术分 +1 收起 理由
简★零度 + 1

查看全部评分

2 个回复

正序浏览
kongling 发表于 2013-12-9 10:41
这样才对Ojb  obj=new Ojb();
                replaceValue(obj);
                System.out.println(ob ...

哦。对,是这样的。没注意呢。谢谢你。
回复 使用道具 举报
这样才对Ojb  obj=new Ojb();
                replaceValue(obj);
                System.out.println(obj);

replaceValue(new Ojb());你这里new Ojb()构造了一个临时变量。没有保存他的引用,System.out.println(new Ojb());的new Ojb()又重新构造了一个对象

评分

参与人数 1技术分 +1 收起 理由
简★零度 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马