4

DSL の目的で、次のように定義されたメソッドを検出したいと考えています。

  def "methodName"() {}

また

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

リフレクションを使用してそれを行う方法はありますか?

4

1 に答える 1

1

この情報は実行時には利用できません。AST 変換を使用しても、メソッドが文字列を使用して定義されていることを把握することはできません。

このためには、独自に作成AntlrParserPluginし、 custom を使用して使用する必要がありますCompilerConfiguration。次に、 methodDef fromAntlrParserPluginで、メソッドの名前が解析されるときに、名前の前の文字が二重引用符であることを確認できます。二重引用符が見つかった場合は、生成された にカスタム注釈を追加して、MethodNode実行時に情報を利用できるようにします...

于 2012-06-22T14:43:11.033 に答える