为什么不能从另一个Groovy类实例化Groovy类?

问题描述 投票:4回答:1

我有两节课。一个.groovy:

class One {

  One() {}

  def someMethod(String hey) {
    println(hey)
  }
}

和Two.groovy:

class Two {

  def one

  Two() {
    Class groovy = ((GroovyClassLoader) this.class.classLoader).parseClass("One.groovy")
    one = groovy.newInstance()
    one.someMethod("Yo!")
  }
}

我用类似这样的东西实例化两个:

GroovyClassLoader gcl = new GroovyClassLoader();
Class cl = gcl.parseClass(new File("Two.groovy"));
Object instance = cl.newInstance();

但是现在我得到了groovy.lang.MissingMethodException: No signature of method: script13561062248721121730020.someMethod() is applicable for argument types: (java.lang.String) values: [Yo!]

有什么想法吗?

class groovy classloader instance
1个回答
2
投票

似乎是由于调用了groovy类加载器方法而发生的:string one将以文本格式解析脚本。使用File可以在这里工作:

© www.soinside.com 2019 - 2024. All rights reserved.