本帖最后由 段海涛 于 2012-11-26 23:31 编辑
感谢同学们在贴http://bbs.itheima.com/forum.php ... 93&page=1#pid189290中对我的回复
我按照第二种理解对这个题目进行了code,请大神点评,帮我优化
目标类名为objTest
要求的方法所在的类为SetProp
主函数所在的类为Test4- public class Test4{
- public static void main(String[] args) throws Exception{
- SetProp sp = new SetProp();
- sp.setProp();
-
- }
- }
- class SetProp {
- public void setProp() throws Exception{
- objTest ot = new objTest();
- setProperty(ot,"propertyName","my value------");
- // System.out.println(ot.propertyName); //输出ot对象的属性propertyName的值,可以跟下面标+号的句验证,两者的输出应一致
-
-
- }
- public void setProperty(Object obj, String propName, Object value) throws Exception{
- Class ooo =obj.getClass();
- Object obj_reflect = ooo.newInstance();
- //System.out.println(obj==obj_reflect); 注意这句,这里的判断结果是false哦
- Field fd = ooo.getField(propName);
- // System.out.println(fd.toString()); 通过这句话,你可以看到fd是个什么东东,是否确实获取到了obj里面的propertyName属性
- fd.set(obj, (String)value); //通过这句话来对obj对象的propertyName赋值value
- System.out.println(fd.get(obj)); // 输出obj的属性propertyName的值 -----“+”--------
-
- }
- }
- class objTest{
- public String propertyName;
- }
复制代码 |