在用java的relection调用Object的某方法的时候,invoke(Object o,Object[] args)的args应该是什么参数?

javaprogramlover 2005-12-06 09:21:26
一般invoke方法只能调用的无参数的方法,对于有参数的我该怎么样传参数呢?
比如说调用com.cjl.core.UserService中的public void Check(User user){//......},
我该怎么把user对象传入进去呢?
谢谢!!
...全文
202 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
ChDw 2005-12-07
  • 打赏
  • 举报
回复
这个有什么麻烦的,你要搞清楚Java里面同样的方法名的方法可以有很多个,所以你getMethod的时候当然需要严格指定参数类型,否则Java根本不可能返回一个合适的方法给你


其实我不知道为什么你非要用reflect,一般来说你可以定义一个Interface,将需要的方法写在里面。然后你的实现类实现这个接口就行了,这样代码又简洁
javaprogramlover 2005-12-06
  • 打赏
  • 举报
回复
谢谢,楼上的兄弟,不过我感觉这样的话可能是有点太麻烦的感觉!
ChDw 2005-12-06
  • 打赏
  • 举报
回复
那是你的方法参数不对吧,你要正确的书写参数类型!
Method method =clazz.getMethod("f",new Class[]{User.class});
javaprogramlover 2005-12-06
  • 打赏
  • 举报
回复
Class clazz =Class.forName("com.test.Service");
Object o =clazz.newInstance();
User user =new User();
user.setUsername("zhangsan");
Method method =clazz.getMethod("f",null);
method.invoke(o,new Object[]{user});
报错:
java.lang.NoSuchMethodException: com.test.Service.f()
at java.lang.Class.getMethod(Class.java:978)
at com.test.Test.main(Test.java:10)
tigerlg 2005-12-06
  • 打赏
  • 举报
回复
方法名和参数按顺序写吧
ChDw 2005-12-06
  • 打赏
  • 举报
回复
checkMethod.invoke(userService, new Object[]{user});

按顺序写到Object数组中就可以了

62,629

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧