首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GroovyClassLoader :无法在Groovy类中找到方法的符号

GroovyClassLoader :无法在Groovy类中找到方法的符号
EN

Stack Overflow用户
提问于 2019-08-26 21:54:25
回答 2查看 170关注 0票数 0

我试图在java中使用GroovyClassLoader来执行Groovy中的一个方法。

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

代码语言:javascript
复制
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()位置:对象1类型的变量obj

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-08-26 22:27:40

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

代码语言:javascript
复制
Method sumInstanceMethod
  = Operations.class.getMethod("doIt");
 Object result
      =  sumInstanceMethod.invoke(obj, null);
票数 0
EN

Stack Overflow用户

发布于 2019-08-27 21:13:56

代码语言:javascript
复制
System.out.println(cls.getDeclaredMethod( "doIt", new Class[] {}).invoke( obj,  new Object[] {} ));
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57665414

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档