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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© ccyznhy 中级黑马   /  2013-8-26 17:08  /  1281 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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呢?


评分

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

查看全部评分

4 个回复

倒序浏览
向上转型成object,只要还是个字符串就可以。如果传出的是其他类型的就会报错了
回复 使用道具 举报
这个应该是String的,你可以打印stem.out.println(t.s.getClass());
结果是:class java.lang.String
回复 使用道具 举报
我想在赋值之前判断一下:
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("修改失败");
                }
        }
}


但是为什么结果却和自己想的不一样呢,类型相同,但是执行的确实不相同的代码??
回复 使用道具 举报
{:soso_e176:}
亲,请问下问题是否解决?
如果已解决请及时将未解决改为已解决
如果未解决请回帖追问
三天未回复的将视为已解决
详情参考:如何更改分类

保持队形,谢谢合作
{:soso_e181:}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马