【发布时间】:2014-04-16 10:01:27
【问题描述】:
说在我的 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)
【问题讨论】:
-
myClosure是字段还是局部变量? -
我认为我们可能会涉足 JSR-308 和 Java 8 领域。在此之前,我认为不可能在局部变量上获取运行时注释信息。话虽如此,我正在努力寻找一个使用 Java 8 的工作示例:-/
-
他的例子表明他想查看一个方法的参数(在他的例子中,“doSomething”方法的“closure”参数)并询问该对象并期望发现注释附加到恰好指向该对象的变量引用。即使使用 Java 8 和 JSR-308,它也无法正常工作,不是吗?我不认为这是可能的。可以有任意数量的变量(局部变量和/或字段)都指向同一个对象,并且所有这些变量都可以有不同的注释集。
标签: groovy annotations closures