将groovy对象传递给Java方法

时间:2016-05-25 14:29:41

标签: java groovy groovyshell

我在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类吗?

1 个答案:

答案 0 :(得分:0)

我发现问题是我传递给groovy的变量名称与文件名匹配,文件名正在踩着变量。通过重命名文件或变量,我可以毫无问题地传递对象。