黑马程序员技术交流社区

标题: 代码问题 [打印本页]

作者: ccyznhy    时间: 2013-8-26 17:08
标题: 代码问题
class SetProperty{
        public void setProperty(Object obj, String propertyName, Object value){
                try {
                        Field f = obj.getClass().getDeclaredField(propertyName);
                        f.setAccessible(true);
                        f.set(obj,value);
                } catch (Exception e) {
                        System.out.println("修改失败");
                }
        }
}
class Test{//测试
        private String s = "true";
        public static void main(String[] args) {
                Test t = new Test();
                SetProperty s = new SetProperty();
                s.setProperty(t, "s","false");
                System.out.println(t.s);
        }
}
此代码能实现改正么,value可是object的,怎么能改成string呢?



作者: 薛淑凯    时间: 2013-8-26 18:06
向上转型成object,只要还是个字符串就可以。如果传出的是其他类型的就会报错了
作者: 张慧    时间: 2013-8-26 18:17
这个应该是String的,你可以打印stem.out.println(t.s.getClass());
结果是:class java.lang.String
作者: 杨增坤    时间: 2013-8-26 20:50
我想在赋值之前判断一下:
import java.lang.reflect.Field;

public class SetProperty {
        public void setProperty(Object obj, String propertyName, Object value) {
                try {
                        Field f = obj.getClass().getDeclaredField(propertyName);
                        if (f.getClass().getName().equals(value.getClass().getName())) {
                                f.setAccessible(true);
                                f.set(obj, value);
                        } else {
                                System.out.println(f.getName() + "字段的类类型是:"
                                                + f.getType().getName());
                                System.out.println("您为字段的赋值的类型是:" + value.getClass().getName()
                                                + "\n类型不一致,修改失败");
                        }

                } catch (Exception e) {
                        System.out.println("修改失败");
                }
        }
}


但是为什么结果却和自己想的不一样呢,类型相同,但是执行的确实不相同的代码??

作者: 以防万一    时间: 2013-8-30 00:38
{:soso_e176:}
亲,请问下问题是否解决?
如果已解决请及时将未解决改为已解决
如果未解决请回帖追问
三天未回复的将视为已解决
详情参考:如何更改分类

保持队形,谢谢合作
{:soso_e181:}





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