Apache 的 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;
}
}
}
当我运行此命令时,我收到一个 InvocableTargetException,显示“无法设置名称”。此外,当我将属性字符串设置为“名称”时,我没有收到错误,但未设置名称。
谁能指出我哪里出错了的正确方向?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
去掉 Bean 类的私有属性。由于 BeanUtils 使用反射,它无法访问“setName”方法。之所以可以正常访问私有内部类,是因为java编译器做了一些特殊的技巧来允许你访问。但由于 BeanUtils 没有使用这些技巧,所以它不能。
take the private attribute off of the Bean class. As BeanUtils is using reflection, it can't get access to the method 'setName'. The reason why you can access a private inner class normally, is that the java compiler does special tricks to allow you access. But since BeanUtils isn't using those tricks, it can't.