0

当我运行 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> }}
4

1 回答 1

0

不太好回答:

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

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

这不是一个很好的答案,因为我需要为我想要公开的每个方法创建这些方法引用,但因为它会起作用,我想我会发布它。

编辑——另一个糟糕的答案

另一种可能性是将方法全部设为静态并对每个类进行静态导入。这更好,但我必须重构我想要加载的所有类......仍然不是很棒。

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

于 2018-10-16T17:05:58.853 回答