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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 段海涛 中级黑马   /  2012-11-26 23:28  /  1329 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 段海涛 于 2012-11-26 23:31 编辑

感谢同学们在贴http://bbs.itheima.com/forum.php ... 93&page=1#pid189290中对我的回复
我按照第二种理解对这个题目进行了code,请大神点评,帮我优化

目标类名为objTest
要求的方法所在的类为SetProp
主函数所在的类为Test4
  1. public class Test4{
  2.         public static void main(String[] args) throws Exception{
  3.                 SetProp sp = new SetProp();
  4.                 sp.setProp();
  5.                
  6.         }
  7. }

  8. class SetProp {
  9.         public void setProp() throws Exception{
  10.                 objTest ot = new objTest();
  11.                 setProperty(ot,"propertyName","my value------");
  12.                 // System.out.println(ot.propertyName);    //输出ot对象的属性propertyName的值,可以跟下面标+号的句验证,两者的输出应一致
  13.                
  14.                
  15.         }
  16.         public void setProperty(Object obj, String propName, Object value) throws Exception{
  17.                 Class ooo =obj.getClass();
  18.                 Object obj_reflect = ooo.newInstance();
  19.                 //System.out.println(obj==obj_reflect); 注意这句,这里的判断结果是false哦
  20.                 Field fd = ooo.getField(propName);
  21.                 // System.out.println(fd.toString()); 通过这句话,你可以看到fd是个什么东东,是否确实获取到了obj里面的propertyName属性
  22.                 fd.set(obj, (String)value);   //通过这句话来对obj对象的propertyName赋值value
  23.                 System.out.println(fd.get(obj));  //  输出obj的属性propertyName的值         -----“+”--------

  24.         
  25.         }
  26. }


  27. class objTest{
  28.         public String propertyName;
  29. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
杨千里 + 1

查看全部评分

1 个回复

倒序浏览
顶。。。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马