黑马程序员技术交流社区

标题: 请各位帮忙看下,关于反射的一点小问题 [打印本页]

作者: 一碗小米周    时间: 2013-12-9 10:22
标题: 请各位帮忙看下,关于反射的一点小问题
本帖最后由 一碗小米周 于 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');
复制代码
这里的结果为什么并没有改变呢?求解释。谢谢各位了。

作者: kongling    时间: 2013-12-9 10:41
这样才对Ojb  obj=new Ojb();
                replaceValue(obj);
                System.out.println(obj);

replaceValue(new Ojb());你这里new Ojb()构造了一个临时变量。没有保存他的引用,System.out.println(new Ojb());的new Ojb()又重新构造了一个对象
作者: 一碗小米周    时间: 2013-12-9 10:44
kongling 发表于 2013-12-9 10:41
这样才对Ojb  obj=new Ojb();
                replaceValue(obj);
                System.out.println(ob ...

哦。对,是这样的。没注意呢。谢谢你。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2