Я создаю объект в java и устанавливаю его как переменную в GroovyShell.Передача groovy объекта методу Java
// in java file, create class and shell
//
class Foo {
void addSomething(Bar bar) { ... }
}
shell.setVariable("foo", new Foo())
В заводной я создаю новый класс, который простирается от бара и попробовать позвонить 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: [[email protected]]
Может быть статическая часть бросает меня, но я не понимаю эту ошибку. Я думал, что это может быть связано с передачей созданного groovy подкласса addSomething, но я также попытался передать объект. Я создал из класса java. Могу ли я не передавать созданные groovy объекты в класс java, который я задал как переменную?
Предполагая, что это тот же класс Bar, на который ссылаются в обоих классах, единственной возможной проблемой является область применения addSomething() в классе Foo. Помните, что это на Java, и поэтому вопрос имеет значение (поскольку он будет вызываться извне пакета) –