如何在Java Reflections中声明类之外加载类函数

时间:2015-07-02 05:31:39

标签: java reflection

我使用java思考API从变量动态加载我的函数。当我在同一个类中调用函数时,函数调用正在工作。

现在我试图在声明类之外调用函数。这是我正在使用的代码。

   package com.test.controller;
   try
   {
     Class cls = Class.forName("com.test.Actions");
     System.out.println("trying to get method name");
     java.lang.reflect.Method method=cls.getMethod(action,String.class,HttpServletRequest.class);
     System.out.println("got method name"+method);
     val=method.invoke(this, instInputText,request).toString();
    }
    catch(Exception e){e.printStackTrace();}

我试图访问另一个类和函数,我得到以下错误。

java.lang.IllegalArgumentException: object is not an instance of declaring class

1 个答案:

答案 0 :(得分:2)

例外是因为这一行val=method.invoke(this, instInputText,request).toString();

您正在将this作为实例传递给调用,这意味着它将执行this.method()之类的操作。相反,您需要创建一个类Actions的实例,并使用它代替this