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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 月影箫风起k 于 2014-8-9 14:26 编辑

4、 写一个方法,此方法可将obj对象中名为propertyName的属性的值设置为value.
* public void setProperty(Object obj, String propertyName, Object value){   }好了就这样结束了,大家都说用反射了,那就用反射吧

25 个回复

倒序浏览
路过,说实话,看了一下,真心不明白有什么目的,感觉应该不会像说的那么简单吧
回复 使用道具 举报
这是希望用反射解决吗
回复 使用道具 举报
是不是让你用局部变量value向this.value赋值?
this.value = value;
回复 使用道具 举报
不想飞不到 发表于 2014-8-9 13:10
是不是让你用局部变量value向this.value赋值?
this.value = value;

。。。谁知道啊,这题就这样完整的,看了半天不知道到底干嘛的
回复 使用道具 举报
陶圣虎 发表于 2014-8-9 13:10
这是希望用反射解决吗

谁知道啊题就这
回复 使用道具 举报
真心感觉这个和反射有关,回头再看看视频吧。
回复 使用道具 举报
不想飞不到 发表于 2014-8-9 13:10
是不是让你用局部变量value向this.value赋值?
this.value = value;

那还要obj干嘛,另外话说value还是个对象。。。
回复 使用道具 举报

就是用反射啊。修改任意对象obj中的成员变量的值。视频里讲过这个
回复 使用道具 举报
我也有这道题,我是这样写的
定义一个对象,包含值propertyName,可以是任意的基本数据类型,
定义一个 public void setProperty(Object obj, String propertyName, Object value){ 这里面用反射来改变变量值为value  }
把对象obj,原始值propertyName,新的值alue,传进去修改。解题没有绝对正确性仅供参考
回复 使用道具 举报
舍我其谁 发表于 2014-8-9 13:00
路过,说实话,看了一下,真心不明白有什么目的,感觉应该不会像说的那么简单吧 ...

不知道啥意思I
回复 使用道具 举报
裤裆里的温柔、 发表于 2014-8-9 13:29
我也有这道题,我是这样写的
定义一个对象,包含值propertyName,可以是任意的基本数据类型,
定义一个 pub ...

好吧,看来都用反射了,说实在的题都没读懂
回复 使用道具 举报
围观一下
回复 使用道具 举报
让你写这么个方法,通过方法就可以对对象的这个属性设置对应的值
回复 使用道具 举报
star5603 发表于 2014-8-9 13:51
让你写这么个方法,通过方法就可以对对象的这个属性设置对应的值

好吧,貌似看懂了
回复 使用道具 举报
  1. public static void main(String[] args) {
  2.         String string = "abc";
  3.         String propertyNeme = "value";
  4.         char[] value = { 'a'};
  5.         setProperty(string, propertyNeme, value);
  6.         System.out.println(string);
  7. }

  8. private static void setProperty(Object obj, String propertyNeme, Object value) {
  9.         try {
  10.                 Field property = obj.getClass().getDeclaredField(propertyNeme);
  11.                 property.setAccessible(true);
  12.                 property.set(obj, value);
  13.         } catch (Exception e) {
  14.                 e.printStackTrace();
  15.         }
  16. }
复制代码

大概是这样吧
回复 使用道具 举报 1 0
这个题目的意思就是   现在喊你写一个叫setProperty的方法  可以将一个obj对象 中的其中一个名为propertyName的字段里面的属性改写为value,用反射就可以了
回复 使用道具 举报
是笔写还是用eclipse打啊
回复 使用道具 举报
我怎么觉得,题意已经够清楚了。
方法架子已经搭好,你只能写方法内容。

根据题意需要把obj对象里名为propertyName的属性值设置为value,你也许会想obj.propertyName=value就行

但是propertyName传过来的是字符串,这么做行不通,况且propertyName可能是age,也可能是name,不一定会是什么属性,根本没有obj.propertyName这样一种做法在Java里。

你唯一的出路就是反射
回复 使用道具 举报
  1. import java.beans.PropertyDescriptor;
  2. import java.lang.reflect.Method;
  3. import java.lang.*;
  4. class Test
  5. {
  6.         public static void main(String[] args) throws Exception
  7.         {
  8.                 cc obj=new cc("eulav");
  9.                 setProperty(obj,"propertyName","value");
  10.                 System.out.println(obj.getPropertyName());
  11.         }
  12.         public static void setProperty(Object obj,String propertyName,Object value)throws Exception
  13.         {
  14.                 PropertyDescriptor pd=new PropertyDescriptor(propertyName,obj.getClass());
  15.                 Method method=pd.getWriteMethod();
  16.                 method.invoke(obj,value);
  17.                
  18.         }
  19. }
  20. class cc
  21. {
  22.         private String propertyName;
  23.         cc(String propertyName)
  24.         {
  25.                 this.propertyName=propertyName;
  26.         }
  27.         public String getPropertyName()
  28.         {
  29.                 return propertyName;
  30.         }
  31.         public void setPropertyName(String propertyName)
  32.         {
  33.                 this.propertyName=propertyName;
  34.         }
  35. }
复制代码

刚好看到在  求指教
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马