0

我正在尝试在 java 中使用 GroovyClassLoader 来执行 Groovy 类中的方法。

我创建了一个 Java 类,公共方法创建 GroovyClassLoader 的实例,parseClass 然后创建类的新实例,调用类中的方法。


public class Gtest{

   public static void main(String args[])throws IOException , InstantiationException ,IllegalAccessException {

       GroovyClassLoader gcl = new GroovyClassLoader();       

       Class cls =  gcl.parseClass("class Foo { void doIt() { println \"ok\" } }");
       Object obj = cls.newInstance();
       if(obj == null){
           System.out.println("null");
       }
       obj.doIt();


   }
}

错误:Gtest.java:22:错误:找不到符号 obj.doIt(); ^ 符号:方法 doIt() 位置:Object 1 类型的变量 obj 错误

4

2 回答 2

0
System.out.println(cls.getDeclaredMethod( "doIt", new Class[] {}).invoke( obj,  new Object[] {} ));
于 2019-08-27T21:13:56.323 回答
0

这是因为对象类没有 doIt() 方法。您必须使用以下语法来调用您的方法。

Method sumInstanceMethod
  = Operations.class.getMethod("doIt");
 Object result
      =  sumInstanceMethod.invoke(obj, null);
于 2019-08-26T22:27:40.833 回答