黑马程序员技术交流社区

标题: 求解答、、、不知道那里错了 [打印本页]

作者: 尚志    时间: 2014-9-21 17:47
标题: 求解答、、、不知道那里错了
package com.itheima;

import java.lang.reflect.Field;


/*
* 3、 写一个方法,此方法可将obj对象中名为propertyName的属性的值设置为value.   

public void setProperty(Object obj, String propertyName, Object value){   

}
* */
public class Test3 {

        public static void main(String[] args) {
                 M obj = new M();
                Method method = new Method();
                method.setProperty(obj, "propertyName", "你好");
        }

}
class Method{
        Class c = null;
        Field f = null;
        Object obj = null;
        public void setProperty(Object obj , String propertyName, Object value){
                this.obj =  obj;
                //获取obj对象的字节码
                c = obj.getClass();
                        System.out.println(c);
                        try {
                                Field f = c.getDeclaredField(propertyName);
                                System.out.println(f);
                        } catch (SecurityException e) {
                                // TODO Auto-generated catch block
                                e.printStackTrace();
                        } catch (NoSuchFieldException e) {
                                // TODO Auto-generated catch block
                                e.printStackTrace();
                        }
                        try {
                                f.set( obj, value);
                        } catch (IllegalArgumentException e) {
                                // TODO Auto-generated catch block
                                e.printStackTrace();
                        } catch (IllegalAccessException e) {
                                // TODO Auto-generated catch block
                                e.printStackTrace();
                        }
        }
}

class M{
         String propertyName = "shangzhipeng";
}

红色字体处出现java.lang.NullPointerException异常,怎么也调不对、、
作者: 尚志    时间: 2014-9-21 22:00
人呢?大神呢?
作者: 尚志    时间: 2014-9-22 08:34
反射,反射、、、
作者: dftgg    时间: 2014-9-22 15:03
把那段代码 放到第一个try语句里面试下
作者: 张丽丹    时间: 2014-9-22 17:30
没有给成员变量   Field f = null;赋值,Field f = c.getDeclaredField(propertyName); 这个是局部变量




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2