如何访问groovy闭包注释?
假设我在groovy代码中声明了一个带有如下注释的闭包:如何访问groovy闭包注释?,groovy,annotations,closures,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 annotati
@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)
你不能。注释与字段关联,而不是与字段的值关联。闭包是字段的值。当您执行closure.class.getAnnotations()之类的操作时,您要求的是groovy.lang.closure类上的注释,而不是“closure”变量所指的对象。是
myClosure
字段还是局部变量?我想我们可能正在冒险进入JSR-308和Java 8领域。在此之前,我认为不可能获取局部变量的运行时注释信息。说到这里,我正在努力获得一个Java 8的工作示例:-/他的示例表明,他希望查看一个方法的参数(在他的例子中,是“doSomething”方法的“closure”参数),并询问该对象,期望发现附加到恰好指向该对象的变量引用的注释。即使使用Java8和JSR-308,这也无法实现,是吗?我认为这是不可能的。可以有任意数量的变量(局部变量和/或字段),它们都指向同一个对象,并且所有这些变量都可以有不同的注释集。