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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© www851903307 中级黑马   /  2015-2-20 13:02  /  1250 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

写一个方法,此方法可将obj对象中名为propertyName的属性的值设置为value.
* @author Administrator
*
*/
public class Text1 {

        public static void main(String[] args) throws IllegalAccessException, IllegalArgumentException, InvocationTargetException, NoSuchFieldException {
                Person p = new Person("ss", 12);
                String pnameString = "dsd";
                String value="ssss";
                setPro(p, pnameString,value);
        }

        public static void setPro(Object object, String propertyName, Object value) throws IllegalArgumentException, IllegalAccessException, NoSuchFieldException, SecurityException{
                Class clazz =  object.getClass();
                Field field =clazz.getDeclaredField(propertyName);
                field.setAccessible(true);
                field.set(object, value);       
        }       
}

class Person{
    private String name;
    private int age;
            
    public Person(String name, int age) {
            super();
            this.name = name;
            this.age = age;
    }      

    public String toString() {
            return "Person[name=" + name + ", age=" + age + "]";
    }

}
//Exception in thread "main" java.lang.NoSuchFieldException: dsd  
Field field =clazz.getDeclaredField(propertyName);  这行报错 ,,,请教下高人

点评

Field field =clazz.getDeclaredField("propertyName"); 应该加“”,因为拿的是Object对象  发表于 2015-2-20 13:11

评分

参与人数 1技术分 +1 收起 理由
万合天宜 + 1 很给力!

查看全部评分

2 个回复

倒序浏览
版主已经回答你了, getDeclaredField()  参数里是字段的名称 要传字符串的
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马