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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 可见 中级黑马   /  2012-6-8 21:26  /  1483 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

求解决求解决求解决

17.jpg (90.37 KB, 下载次数: 21)

17.jpg

5 个回复

倒序浏览
已解决 构造方法要public
谁能给我说说为什么?
回复 使用道具 举报
我想应该是你图片中显示的倒数第二行的错误吧

invoke方法的第一个参数应该是生成的对象,而不是一个对象名称的字符串

public Object invoke(Object obj,                     Object... args)              throws IllegalAccessException,                     IllegalArgumentException,                     InvocationTargetException



回复 使用道具 举报
已解决 要用getDeclaredConstructor
- -!!!
回复 使用道具 举报
舒赫莱宁 发表于 2012-6-8 21:55
我想应该是你图片中显示的倒数第二行的错误吧

invoke方法的第一个参数应该是生成的对象,而不是一个对象名 ...

是的 谢谢了~
回复 使用道具 举报
本帖最后由 杨海波 于 2012-6-8 23:01 编辑

楼主你好!根据本人观察和实验,发现楼主可能存在的几处错误如下,先看代码:
  1.         
  2. public static void main(String[] args) throws Exception {

  3.                 // 获取Person类的字节码
  4.                 Class clazz = Class.forName("cn.itcast.domain.Person");
  5.                 // 获取Person类的构造函数
  6.                 Constructor constructor = clazz.getConstructor(String.class, int.class);

  7.                 // 初始化Person对象,name为TOM age为21
  8.                 Person person = (Person) constructor.newInstance("TOM", 21);

  9.                 // 获取setName方法
  10.                 Method method = clazz.getMethod("setName", String.class);

  11.                 // 调用setName方法
  12.                 method.invoke(person, "Jack");

  13.                 // 输出
  14.                 System.out.println(person.getName());

  15.         }
复制代码
运行结果:Jack
楼主发生应该是在调用方法时出现错误,invoke(Object, Object... args)方法接收的第一个参数是调用该方法的对象,第二个参数是一个可变参数,用来接收方法运行时需要的参数。
另外,建议楼主在eclipse中编辑代码时显示行号(代码编辑区左侧,鼠标右击 选中show Line Numbers ),出错的时候方便我们精确定位!
希望能对你有所帮助!大家一起进步!加油!{:soso_e130:}

评分

参与人数 1技术分 +1 收起 理由
赵志勇 + 1 赞一个!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马