一般invoke方法只能调用的无参数的方法,对于有参数的我该怎么样传参数呢?
比如说调用com.cjl.core.UserService中的public void Check(User user){//......},
我该怎么把user对象传入进去呢?
谢谢!!

解决方案 »

  1.   

    checkMethod.invoke(userService, new Object[]{user});按顺序写到Object数组中就可以了
      

  2.   

    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)
      

  3.   

    那是你的方法参数不对吧,你要正确的书写参数类型!
    Method method =clazz.getMethod("f",new Class[]{User.class});
      

  4.   

    这个有什么麻烦的,你要搞清楚Java里面同样的方法名的方法可以有很多个,所以你getMethod的时候当然需要严格指定参数类型,否则Java根本不可能返回一个合适的方法给你
    其实我不知道为什么你非要用reflect,一般来说你可以定义一个Interface,将需要的方法写在里面。然后你的实现类实现这个接口就行了,这样代码又简洁