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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 陈嘉宾 中级黑马   /  2012-6-17 20:00  /  1326 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 陈嘉宾 于 2012-6-17 20:22 编辑

private static void changeStringValue(Object obj)这里为什么不能直接放String呢?还有if(field.getType()==String.class)这句话是什么意思主要是getType没明白什么意思





public class ReflectPoint {
public String str1="ball";
public String str2="basketball";
public String str3="itcast";
           @Override
         public String toString(){
                 return str1+":"+str2+":"+str3;
         }
}


public static void main(String[] args) throws Exception{
changeStringValue(pt1);
                System.out.println(pt1);
}

private static void changeStringValue(Object obj) throws Exception{
                Field[] fileds=obj.getClass().getFields();
                for(Field field:fileds){
                        //if(field.getType().equals(String.class)){;
                        if(field.getType()==String.class){
                                String oldValue =(String)field.get(obj);
                                String newValue=oldValue.replace('b','a');
                                field.set(obj, newValue);
                        }
                        
                }
               
        }

}

评分

参与人数 1技术分 +1 收起 理由
黄奕豪 + 1 赞一个!

查看全部评分

2 个回复

倒序浏览
首先,你的代码有问题,pt1是干嘛的。应该是在main方法中实例化的一个ReflectPoint 类的一个对象吧。
private static void changeStringValue(Object obj)
方法参数Object表示可以接收任意对象。怎么可能是String呢???!!!这个方法是修改对象属性中类型为String类型的值。楼主对代码不理解啊~~~
Field类的getType方法。其实你自己查阅帮助文档上面写的清清楚楚啊。返回一个 Class 对象,它标识了此 Field 对象所表示字段的声明类型。

评分

参与人数 1技术分 +1 收起 理由
黄奕豪 + 1 赞一个!

查看全部评分

回复 使用道具 举报
伊文龙 发表于 2012-6-17 20:16
首先,你的代码有问题,pt1是干嘛的。应该是在main方法中实例化的一个ReflectPoint 类的一个对象吧。
priva ...

呵呵谢谢,越看越迷糊,很多地方都是不理解真实的意思,看来还是有很不不足啊:'(
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马