我可以添加一组类作为groovysh的代表吗

时间:2018-10-16 16:57:13

标签: groovy 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 个答案:

答案 0 :(得分:0)

回答不太好:

我刚刚意识到一个可能的答案是:加载一个看起来像这样的脚本:

classA=new A()
classb=new B()
test=classA.&test
test2=classB.&test

这不是一个很好的答案,因为我需要为我想公开的每个方法创建这些方法引用,但是由于可以使用,所以我认为应该将其发布。

编辑-另一个不好的答案

另一种可能性是使方法全部静态,并对每个类进行静态导入。这样比较好,但是我必须重构所有我想加载的类……仍然不妙。

我希望有人发布更好的东西。