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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 谢波 中级黑马   /  2013-2-6 20:08  /  1858 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 谢波 于 2013-2-21 13:06 编辑
  1. package mypackage;

  2. import java.lang.reflect.InvocationTargetException;
  3. import java.util.Map;

  4. import org.apache.commons.beanutils.BeanUtils;
  5. import org.apache.commons.beanutils.PropertyUtils;


  6. public class BeanUtilsDemo {
  7. public static void main(String[] args) throws Exception, InvocationTargetException, NoSuchMethodException
  8. {
  9. Demo d = new Demo(5,2);
  10. String name = "x";
  11. String value = BeanUtils.getProperty(d, name);
  12. System.out.println(value);
  13. }
  14. }
  15. class Demo
  16. {
  17. private int x, y;

  18. public Demo(int x, int y) {
  19. super();
  20. this.x = x;
  21. this.y = y;
  22. }

  23. public int getX() {
  24. return x;
  25. }

  26. public void setX(int x) {
  27. this.x = x;
  28. }

  29. public int getY() {
  30. return y;
  31. }

  32. public void setY(int y) {
  33. this.y = y;
  34. }

  35. }
复制代码
编译时没问题,运行就会出现异常:
Exception in thread "main" java.lang.NoSuchMethodException: Property 'x' has no getter method in class 'class mypackage.Demo'
我明明有get方法啊 ,,求解?

7 个回复

倒序浏览
Beanutils其实是通过反射技术来操作对象内的字段的,所以要操作的JavaBean需要有空参数的构造方法!你给Demo创建个默认的构造器试试看!
回复 使用道具 举报
String value = BeanUtils.getProperty(d, name);是不是这里有问题?我也不是很懂
回复 使用道具 举报
李东城 发表于 2013-2-6 22:36
Beanutils其实是通过反射技术来操作对象内的字段的,所以要操作的JavaBean需要有空参数的构造方法!你给Dem ...

不行诶,还是那个样子
回复 使用道具 举报
铿锵科技 发表于 2013-2-6 23:02
String value = BeanUtils.getProperty(d, name);是不是这里有问题?我也不是很懂

这句话没有错啊
回复 使用道具 举报
谢波 发表于 2013-2-7 11:54
这句话没有错啊

你的是不是Property对象?
回复 使用道具 举报
铿锵科技 发表于 2013-2-7 12:34
你的是不是Property对象?

是啊,Property里面存的是字符串啊
回复 使用道具 举报
Property对象是XXX=YYY格式的
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马