有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java反映Groovy脚本中声明的函数

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


共 (2) 个答案

  1. # 1 楼答案

    这个放到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");
    
  2. # 2 楼答案

    经过一些实验,我发现这是最简单的方法:

    GroovyShell shell = new GroovyShell();
    Script script = (Script)shell.parse(new FileReader("x.groovy"));
    Method[] methods = script.getClass().getMethods();
    

    method数组具有脚本中定义的所有函数,我可以从中获取注释