将 groovy 对象传递给 Java 方法



我正在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]

也许静态部分让我失望,但我不明白错误。 我认为这可能与传递一个时髦创建的子类来添加某些东西有关,但我也尝试传递一个对象。我从一个 java 类创建。 我不能将时髦创建的对象传递给我设置为变量的 java 类吗?

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

最新更新