Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
出于 DSL 目的,我想检测定义如下的方法:
def "methodName"() {}
或者
def "This is another method name"() {}
有没有办法使用反射来做到这一点?
此信息在运行时不可用。即使使用 AST 转换,您也无法确定该方法是使用字符串定义的。
为此,您必须自己编写AntlrParserPlugin并使用自定义CompilerConfiguration. 然后在 methodDef from 中AntlrParserPlugin,当解析方法的名称时,您可以检查名称前面的字符是否是双引号。如果找到双引号,则在生成的 中添加自定义注解MethodNode,以便信息在运行时可用...
AntlrParserPlugin
CompilerConfiguration
MethodNode