黑马程序员技术交流社区

标题: 关于反射中Field类的小问题 [打印本页]

作者: 刘明月    时间: 2012-9-8 12:25
标题: 关于反射中Field类的小问题
注:本题目中有两处错误!

public class Test1 {
  String s="basketbaoo";
  String s2="balsl";
  String s1="itcast";
@Override
public String toString() {
  return "Test1 [s=" + s + ", s2=" + s2 + ", s1=" + s1 + "]";
}
}
public class Test2 {
public static void main(String[] args) throws IllegalArgumentException, IllegalAccessException
{
  Test1 test=new Test1();
  changeToString(test);
  System.out.println(test);
}
public static void changeToString(Object obj) throws IllegalArgumentException, IllegalAccessException
{
  Field[]fields=Object.class.getFields();
  for(Field field:fields)
{
   if(field.getType()==String.class)
   {
    String oldValue=(String)field.get(obj);
    String newValue=oldValue.replace('b','a');
    field.set(obj, newValue);
   
   }
  }
}
}

作者: 武庆东    时间: 2012-9-8 13:19
问题呢,哪去了?
作者: 彭润生    时间: 2012-9-8 13:31
本帖最后由 彭润生 于 2012-9-8 13:48 编辑

注:本题目中有两处错误!

public class Test1 {
  String s="basketbaoo";
  String s2="balsl";
  String s1="itcast";
@Override
public String toString() {
  return "Test1 [s=" + s + ", s2=" + s2 + ", s1=" + s1 + "]";
}
}
public class Test2 {
public static void main(String[] args) throws IllegalArgumentException, IllegalAccessException
{
  Test1 test=new Test1();
  changeToString(test);
  System.out.println(test);
}
public static void changeToString(Object obj) throws IllegalArgumentException, IllegalAccessException
{
  Field[]fields=Object.class.getFields();//这儿获取的对象应该是obj.getClass(),不然你,你传一个Object.class而object里面没有这个String.class的这个成员所以,if里面的没有执行
  for(Field field:fields)
{
   if(field.getType()==String.class)
   {
     String oldValue=(String)field.get(obj);
    String newValue=oldValue.replace('b','a');
    field.set(obj, newValue);
   
   }
  }
}
}
不知道改过后的,是不是你想要的结果。


作者: 刘明月    时间: 2012-9-8 15:15
彭润生 发表于 2012-9-8 13:31
注:本题目中有两处错误!

public class Test1 {

还有一个错误




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