2016-05-25 9 views
2

Я создаю объект в 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, который я задал как переменную?

+0

Предполагая, что это тот же класс Bar, на который ссылаются в обоих классах, единственной возможной проблемой является область применения addSomething() в классе Foo. Помните, что это на Java, и поэтому вопрос имеет значение (поскольку он будет вызываться извне пакета) –

ответ

0

Я обнаружил, что проблема заключалась в том, что имя переменной, которое я передавал в groovy, соответствовало имени файла, и имя файла топало над переменной. Переименовав файл или переменную, я мог бы без каких-либо проблем передать объект.