黑马程序员技术交流社区
标题: 这道题我不明白是什么意思? [打印本页]
作者: woaiheima 时间: 2014-10-26 16:02
标题: 这道题我不明白是什么意思?
本帖最后由 woaiheima 于 2014-10-27 12:21 编辑
写一个方法,此方法可将obj对象中名为propertyName的属性的值设置为value.
public void setProperty(Object obj, String propertyName, Object value){
}
作者: Eagle 时间: 2014-10-26 16:10
楼主。这个复写可以吗??
作者: 英雄传说ER 时间: 2014-10-26 20:40
这题的意思是写一个方法 把一个 对象的属性值 修改为指定的值
例如 有个student类 new了一个名字叫张三的学生对象 studeng s= new student(“张三”) 现在要把 name 这个属性改为“李四”
public void setProperty(student s,String name,student "李四"){这里面就是你要写的内容}
上面只是解释这题 你真正写的时候 参数还是要写 (Object obj,String property,object obj)的,内容里面用反射去得到具体的类,反射具体的属性名字,
作者: 姠佐メ亾佑つ 时间: 2014-10-26 21:22
这是我的入学测试题:楼主可以参照下 代码如下!
- package com.itheima;
- import java.lang.reflect.Field;
- /**
- * 第3题:写一个方法,此方法可将obj对象中名为propertyName的属性的值设置为value.
- *
- * public void setProperty(Object obj, String propertyName, Object value){
- *
- * }
- *
- * @author IBM
- *
- */
- /*
- * 思路:看题目就能明确是要求用反射的方法操作(File类)
- *
- * 1,创建一个测试类A 分别定义公共和私有的成员变量;
- *
- * 2,分别定义两个方法访问私有成员和公共成员变量
- *
- * 3,调用自定义方法测试
- *
- */
- public class Test3 {
-
- public static void main(String[] args) throws Exception {
-
- //创建对象A
-
- A obj = new A();
-
- //将对象中的a变量赋值为3,默认的为0;
-
- setProperty(obj,"a", 3 );
-
- //打印a的值
-
- System.out.println(obj.a);
-
- //将对象中的s变量赋值为2,默认的为5;
-
- setNotAccessibleProperty(obj,"b", 2 );
-
- //打印a的值
-
- System.out.println(obj.b);
-
- }
-
- //定义方法可以可将obj对象中名为propertyName的属性的值设置为value.
-
- //该方法不能访问私有成员
-
- public static void setProperty(Object obj, String propertyName, Object value) throws Exception{
-
- //通过给定的类名称,加载对应的字节码文件,并封装成字节码文件对象Class
-
- Class<?> clazz = obj.getClass();
-
- Field field = clazz.getField(propertyName);//获取公共字段
-
- field.set(obj, value);//设置字段为value
-
- }
-
- //定义方法可以可将obj对象中名为propertyName的属性的值设置为value.
-
- //该方法可以访问私有成员
-
- public static void setNotAccessibleProperty(Object obj, String propertyName, Object value) throws Exception{
-
- Class<?> clazz = obj.getClass();
-
- Field field = clazz.getDeclaredField(propertyName);
-
- //赋值强将该成员变量的访问权限打开
-
- field.setAccessible(true);
-
- field.set(obj, value);
-
- //赋完值将该成员变量的访问权限关闭
-
- field.setAccessible(false);
-
- }
-
- //创建一个A类测试用,分别设置成员变量a和b的值(a为公共的,b为私有的)
-
- public static class A {
-
- public int a= 0;
-
- private int b = 5;
-
- }
-
- }
复制代码
作者: zaneleo 时间: 2014-10-27 12:16
很不错~以后可以用到~
作者: ジ旋律 时间: 2014-10-27 16:20
谢谢了,
作者: 烟默year 时间: 2014-10-30 00:50
学到东西了!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |