我在java中创建一个对象并将其设置为GroovyShell中的变量。
// in java file, create class and shell
//
class Foo {
void addSomething(Bar bar) { ... }
}
shell.setVariable("foo", new Foo())
在groovy中,我创建了一个从Bar扩展的新类,并尝试调用addSomething()
。
class MyBar extends Bar
{
...
}
foo.addSomething(new MyBar())
这会失败,例如:
groovy.lang.MissingMethodException: No signature of method: static foo.addSomething() is applicable for argument types: (MyBar) values: [MyBar@4ba7aa7]
也许静态部分让我失望,但我不理解错误。我认为这可能与将groovy创建的子类传递给addSomething有关,但我也尝试传递一个对象。我是从java类创建的。我不能将groovy创建的对象传递给我设置为变量的java类吗?
答案 0 :(得分:0)
我发现问题是我传递给groovy的变量名称与文件名匹配,文件名正在踩着变量。通过重命名文件或变量,我可以毫无问题地传递对象。