我发现更容易实现这种功能:
RESTClient client = new RESTClient("https://api.github.com", JSON)
class CoreApi {}
RESTClient.methods*.name.each { name ->
if (! CoreApi.methods.contains(name)) {
CoreApi.metaClass.static."$name" = {Object... args -> client."$name"(*args)}
}
}
然后我们可以使用CoreApi.get(path: "/users/your-user")
在groovy中是否有可用于实现此类行为的注释?它叫什么?
答案 0 :(得分:2)
您正在寻找@Delegate
class CoreApi {
@Delegate RESTClient client
}
但它不适用于静态方法
GroovyObject接口中的静态方法,合成方法或方法不适合委派