如何访问groovy闭包注释?

时间:2014-04-16 10:01:28

标签: groovy annotations closures

在我的groovy代码中说我已经声明了一个带有这样注释的闭包:

@GET('/heartbeat')
def myClosure = { req, res ->
  res.end('OK')
}

所以现在在我的代码中我想从闭包中提取GET注释,这样我就可以创建一些自动映射:

public void doSomething(Closure closure) {
  closure.class.getAnnotations() // does not contain the GET annotation...
}

我怎么能得到它?

所以完整的代码是:

@GET('/heartbeat')
def myClosure = { req, res ->
  res.end('OK')
}

public void doSomething(Closure closure) {
  closure.class.getAnnotations() // does not contain the GET annotation...
}

doSomething(myClosure)

1 个答案:

答案 0 :(得分:2)

你做不到。注释与字段相关联,而不是字段的值。关闭是该领域的价值。当你执行closure.class.getAnnotations()之类的操作时,你要求groovy.lang.Closure类上的注释,而不是那些“closure”变量所引用的对象。