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