Можно ли добавить группу классов в качестве делегатов в groovysh?
Когда я запускаю groovysh, я хотел бы добавить несколько классов, чтобы они выполнялись, как если бы они были делегатами. Это должно работать так:
при условии, что эти классы существуют:
def A{
def test() {println "test"}
}
def B{
def test2() {println "test2"}
}
Я хотел бы иметь возможность сделать это:
groovysh
groovy:000>test()
test
groovy:000>test2()
test2
Я мог бы сканировать классы и вручную добавлять каждый метод в файл groovy.properties, но это было бы чрезвычайно хрупко.
Есть ли способ указать эти классы как делегаты или как-то заставить его действовать так, как будто я сделал что-то эквивалентное:
new A().using{new B.using{ <groovysh runs in here> }}
1 ответ
Не очень хороший ответ:
Я только что понял, что один из возможных ответов: загрузить скрипт, который выглядит так:
classA=new A()
classb=new B()
test=classA.&test
test2=classB.&test
Это не очень хороший ответ, потому что мне нужно создавать эти ссылки на методы для каждого метода, который я хочу представить, но, поскольку он будет работать, я решил опубликовать его.
РЕДАКТИРОВАТЬ - еще один плохой ответ
Другой возможностью было бы сделать все методы статичными и выполнить статический импорт каждого класса. Это лучше, но я должен был бы переорганизовать все классы, которые я хочу загрузить... все еще не удивительный.
Я надеюсь, что кто-то публикует что-то лучше.