Не делая ничего конкретного, я просто получил простую версию этого, следуя совету из статьи SjB и создавая интерфейс на Java, который затем реализует класс groovy.
В Java:
interface decorator {
public String decorate(String in) ;
}
А потом внедряем в Groovy:
class GroovyDecorator implements decorator {
public String decorate(String in) {
return "foo";
}
}
Затем используйте это в Java, как:
...
public void javaFunc(someObject someStuff, decorator d) {
// do some stuff
d.decorate("input string");
}
И звонит из заводной:
GroovyDecorator gd = new GroovyDecorator() ;
javaFunc(someStuff, gd) ;
Это работало нормально без необходимости какой-либо специальной компиляции, хотя я работаю в установленной отличной среде, которая может иметь некоторую специальную конфигурацию, о которой я не знаю.
Обратите внимание, что автоматическая перекомпиляция файлов .groovy не работает. Если я изменил GroovyDecorator, мне пришлось бы перезапустить Grails, что делает реализацию таких вещей гораздо менее полезной.