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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© woaiheima 高级黑马   /  2014-10-26 16:02  /  1753 人查看  /  7 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 woaiheima 于 2014-10-27 12:21 编辑

写一个方法,此方法可将obj对象中名为propertyName的属性的值设置为value.   
public void setProperty(Object obj, String propertyName, Object value){   
}

评分

参与人数 1黑马币 +1 收起 理由
杨佳名 + 1

查看全部评分

7 个回复

倒序浏览
楼主。这个复写可以吗??
回复 使用道具 举报
这题的意思是写一个方法 把一个 对象的属性值 修改为指定的值
例如 有个student类  new了一个名字叫张三的学生对象 studeng s= new student(“张三”) 现在要把 name 这个属性改为“李四”
public void setProperty(student s,String name,student "李四"){这里面就是你要写的内容}
上面只是解释这题 你真正写的时候 参数还是要写 (Object obj,String property,object obj)的,内容里面用反射去得到具体的类,反射具体的属性名字,

评分

参与人数 1技术分 +1 收起 理由
杨佳名 + 1

查看全部评分

回复 使用道具 举报
这是我的入学测试题:楼主可以参照下 代码如下!

  1. package com.itheima;

  2. import java.lang.reflect.Field;

  3. /**
  4. * 第3题:写一个方法,此方法可将obj对象中名为propertyName的属性的值设置为value.
  5. *
  6. * public void setProperty(Object obj, String propertyName, Object value){
  7. *
  8. * }
  9. *
  10. * @author IBM
  11. *
  12. */

  13. /*
  14. * 思路:看题目就能明确是要求用反射的方法操作(File类)
  15. *
  16. * 1,创建一个测试类A 分别定义公共和私有的成员变量;
  17. *
  18. * 2,分别定义两个方法访问私有成员和公共成员变量
  19. *
  20. * 3,调用自定义方法测试
  21. *
  22. */

  23. public class Test3 {
  24.        
  25.         public static void main(String[] args) throws Exception {
  26.                
  27.                 //创建对象A
  28.                
  29.                 A obj = new A();
  30.                
  31.                 //将对象中的a变量赋值为3,默认的为0;
  32.                
  33.                 setProperty(obj,"a", 3 );
  34.                
  35.                 //打印a的值
  36.                
  37.                 System.out.println(obj.a);
  38.                
  39.                 //将对象中的s变量赋值为2,默认的为5;
  40.                
  41.                 setNotAccessibleProperty(obj,"b", 2 );
  42.                
  43.                 //打印a的值
  44.                
  45.                 System.out.println(obj.b);
  46.                
  47.         }
  48.        
  49.         //定义方法可以可将obj对象中名为propertyName的属性的值设置为value.
  50.        
  51.         //该方法不能访问私有成员
  52.        
  53.         public static void setProperty(Object obj, String propertyName, Object value) throws Exception{
  54.                  
  55.                 //通过给定的类名称,加载对应的字节码文件,并封装成字节码文件对象Class
  56.                
  57.                 Class<?> clazz = obj.getClass();
  58.                
  59.                 Field field = clazz.getField(propertyName);//获取公共字段
  60.                
  61.                 field.set(obj, value);//设置字段为value
  62.                
  63.         }
  64.        
  65.         //定义方法可以可将obj对象中名为propertyName的属性的值设置为value.
  66.        
  67.         //该方法可以访问私有成员
  68.        
  69.         public static void setNotAccessibleProperty(Object obj, String propertyName, Object value) throws Exception{
  70.                
  71.                 Class<?> clazz = obj.getClass();
  72.                
  73.                 Field field = clazz.getDeclaredField(propertyName);
  74.                
  75.                 //赋值强将该成员变量的访问权限打开
  76.                
  77.                 field.setAccessible(true);
  78.                
  79.                 field.set(obj, value);
  80.                
  81.                 //赋完值将该成员变量的访问权限关闭
  82.                
  83.                 field.setAccessible(false);
  84.                
  85.         }
  86.        
  87.     //创建一个A类测试用,分别设置成员变量a和b的值(a为公共的,b为私有的)
  88.        
  89.         public static class A {
  90.                
  91.                 public int a= 0;
  92.                
  93.                 private int b = 5;
  94.                
  95.         }
  96.        
  97. }
复制代码
回复 使用道具 举报
zaneleo 来自手机 中级黑马 2014-10-27 12:16:10
报纸
很不错~以后可以用到~
回复 使用道具 举报
ジ旋律 来自手机 中级黑马 2014-10-27 16:20:50
地板
谢谢了,
回复 使用道具 举报
学到东西了!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马