java-反思Groovy脚本中声明的函数

是否有一种方法可以获取Groovy脚本中声明的,通过GroovyShell对象评估过的函数的反射数据?具体来说,我想枚举脚本中的函数并访问附加到它们的注释.

解决方法:

将其放在Groovy脚本的最后一行-它将用作脚本a-la的返回值:

 // x.groovy
 def foo(){}
 def bar(){}
 this

然后,可以从Java代码执行以下操作:

 GroovyShell shell = new GroovyShell();
 Script script = (Script) shell.evaluate(new File("x.groovy"));

现在看来,没有办法直接从Java内省Groovy脚本的注释.但是,您可以在同一Groovy脚本中实现一种方法,然后从Java代码中调用该方法,例如:

//groovy
def test(String m){
  method = x.getMethod(m, [] as Class[])
  assert method.isAnnotationPresent(X)
}

//java
script.getMetaClass().invokeMethod(script, "test", "foo");
上一篇:学习spock测试框架


下一篇:Gradle+Groovy提高篇