出于DSL目的,我想检测定义如下的方法:
def "methodName"() {}
或
def "This is another method name"() {}
有没有办法用反射做到这一点?
答案 0 :(得分:1)
此信息在运行时不可用。即使使用AST转换,您也无法确定该方法是使用字符串定义的。
为此,您必须编写自己的AntlrParserPlugin
并使用自定义CompilerConfiguration
来使用它。然后在AntlrParserPlugin
的methodDef中,当解析方法的名称时,您可以检查名称前面的字符是否为双引号。如果找到双引号,则向生成的MethodNode
添加自定义注释,以便在运行时提供信息...