当我运行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> }}
答案 0 :(得分:0)
回答不太好:
我刚刚意识到一个可能的答案是:加载一个看起来像这样的脚本:
classA=new A()
classb=new B()
test=classA.&test
test2=classB.&test
这不是一个很好的答案,因为我需要为我想公开的每个方法创建这些方法引用,但是由于可以使用,所以我认为应该将其发布。
编辑-另一个不好的答案
另一种可能性是使方法全部静态,并对每个类进行静态导入。这样比较好,但是我必须重构所有我想加载的类……仍然不妙。
我希望有人发布更好的东西。