黑马程序员技术交流社区

标题: FIeld类中的强制转换问题。<已解决。谢谢诸位> [打印本页]

作者: 黑马-王建雨    时间: 2012-5-11 17:53
标题: FIeld类中的强制转换问题。<已解决。谢谢诸位>
本帖最后由 啷个里个郞 于 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);
      }
}
作者: 云惟桉    时间: 2012-5-11 18:16
因为Field类中的get方法返回的是Object类的对象,因此要进行如下操作
String oldvalue = (String)field.get(obj);
就需要进行强制类型转换,把Object类型对象转换成String类型对象。

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

作者: 小小企鹅    时间: 2012-5-11 18:29
field.get(obj);返回的是Object类型,oldvalue为String类型需要强制类型转换。
作者: 李啸    时间: 2012-5-11 18:35
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 18:54
public Object get(Object obj)
这个是方法的定义,可以看出得到的是Object类型,而你所要的oldvalue是String类型的,所以要进行强制的类型转换。
作者: 黑马-王建雨    时间: 2012-5-11 22:26
谢谢各位
作者: 孙宇晨    时间: 2012-5-11 22:49
field.get(obj)返回一个 object 类型. 你定义接受他的变量是string类型的 所以需要强转  与上面的if判断无关





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