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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 啷个里个郞 于 2012-5-12 10:38 编辑

private static void changeStringValue(Oblect obj)
{
    if(field.getType() == String.class)
      {
          String oldvalue = (String)field.get(obj);//前面不是判断过了吗?为什么还要强制转换呢?
      String oldvalue = oldValue.replace("b","a");
          field.set(obj, newValue);
      }
}

评分

参与人数 1技术分 +1 收起 理由
攻城狮 + 1 赞一个!

查看全部评分

6 个回复

倒序浏览
因为Field类中的get方法返回的是Object类的对象,因此要进行如下操作
String oldvalue = (String)field.get(obj);
就需要进行强制类型转换,把Object类型对象转换成String类型对象。

不过要不是楼主提出这个问题,我也没注意到呢,还是要感谢楼主啊!

点评

谢谢  发表于 2012-5-11 23:31

评分

参与人数 1技术分 +1 收起 理由
攻城狮 + 1 赞一个!

查看全部评分

回复 使用道具 举报
field.get(obj);返回的是Object类型,oldvalue为String类型需要强制类型转换。

点评

谢谢  发表于 2012-5-11 23:31

评分

参与人数 1技术分 +1 收起 理由
攻城狮 + 1 赞一个!

查看全部评分

回复 使用道具 举报
private static void changeStringValue(Oblect obj)
{
     if(field.getType() == String.class)//我不知道你的field定义是什么类型
       {
           String oldvalue = (String)field.get(obj);//前面所判断的是你之前定义文件类型而这里是你所获取的文件不是一回事field.get(obj)所返回的类型是Object类型的
       String oldvalue = oldValue.replace("b","a");
           field.set(obj, newValue);
       }
}

点评

谢谢  发表于 2012-5-11 23:32
回复 使用道具 举报
public Object get(Object obj)
这个是方法的定义,可以看出得到的是Object类型,而你所要的oldvalue是String类型的,所以要进行强制的类型转换。

点评

谢谢  发表于 2012-5-11 23:32
回复 使用道具 举报
谢谢各位
回复 使用道具 举报
field.get(obj)返回一个 object 类型. 你定义接受他的变量是string类型的 所以需要强转  与上面的if判断无关

点评

谢谢  发表于 2012-5-11 23:33
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马