Apache的BeanUtils问题

时间:2011-04-12 20:53:22

标签: java apache-commons-beanutils

我正在尝试在bean中设置属性,我似乎无法让BeanUtils工作......

这是我得到的问题的一个小例子。

public class Example
{
    public static void main(String[] args)
    {
        Example example = new Example();
        example.run();
    }
    public void run()
    {
        try
        {
            Bean bean = new Bean();
            BeanUtils.setProperty(bean, "name", "myName");
            System.out.println(bean.getName());
        } catch (Exception ex)
        {
            ex.printStackTrace();
        }
    }
    private class Bean
    {
        private String name;

        public String getName()
        {
            return name;
        }

        public void setName(String name)
        {
            this.name = name;
        }
    }
}

当我运行这个时,我得到一个InvocationTargetException,说“无法设置名称”当我将属性字符串改为“Name”时,我没有得到错误,但是没有设置名称。

有人能指出我在哪里出错了吗?

1 个答案:

答案 0 :(得分:3)

从Bean类中取出private属性。由于BeanUtils使用反射,因此无法访问方法'setName'。您通常可以访问私有内部类的原因是java编译器执行特殊技巧以允许您访问。但由于BeanUtils没有使用这些技巧,所以不能。