如果使用“字符串”声明方法,则告诉

时间:2012-06-15 19:39:08

标签: groovy

出于DSL目的,我想检测定义如下的方法:

  def "methodName"() {}

  def "This is another method name"() {}

有没有办法用反射做到这一点?

1 个答案:

答案 0 :(得分:1)

此信息在运行时不可用。即使使用AST转换,您也无法确定该方法是使用字符串定义的。

为此,您必须编写自己的AntlrParserPlugin并使用自定义CompilerConfiguration来使用它。然后在AntlrParserPlugin的methodDef中,当解析方法的名称时,您可以检查名称前面的字符是否为双引号。如果找到双引号,则向生成的MethodNode添加自定义注释,以便在运行时提供信息...