黑马程序员技术交流社区
标题:
Object obj 这参数有点晕帮理解下思路
[打印本页]
作者:
yinjiek
时间:
2013-7-25 18:31
标题:
Object obj 这参数有点晕帮理解下思路
本帖最后由 yinjiek 于 2013-7-29 14:29 编辑
public static void main(String[] args) throws Exception {
ChangeStringValue p1=new ChangeStringValue(3, 5);
Field fieldy=p1.getClass().getField("y");
//field不是对象身上的变量,而是类身上
System.out.println(fieldy.get(p1));
Field fieldx=p1.getClass().getDeclaredField("x");
fieldx.setAccessible(true);
System.out.println(fieldx.get(p1));
changeStringValue(p1);
System.out.println(p1);
}
private static void changeStringValue(Object obj)throws Exception {
Field [] fields=obj.getClass().getFields(); //获取class字节码文件
for(Field f:fields){
if(f.getType()==String.class){
String oldValue=(String) f.get(obj);
String newValue=oldValue.replace('b', 'a');
f.set(obj, newValue);
}
}
}
//实体类
public class ChangeStringValue {
private int x;
public int y;
public String str1="asbbdfsf";
public String str2="gfdbgsaa";
public String str3="gfgf";
public ChangeStringValue(int x, int y) {
super();
this.x = x;
this.y = y;
}
@Override
public String toString() {
return str1+":"+str2+":"+str3;
}
}
作者:
于世德
时间:
2013-7-25 19:29
首先我不太理解的是你的main方法和changeStringValue怎么会单独定义在类的外部;而且changeStringValue方法和changeStringValue类一样的名字,这样可读性很差。changeStringValue这个方法接收一个Object类型的数据,也就是说你可以给这个方法传入任意类型的对象,它们都可以向上转型为Object(多态).然后该方法获取对象的Class对象,判断是否为String类型,如果是,则进行相应的操作
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2