黑马程序员技术交流社区
标题:
关于反射中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