Groovy:将实例方法委托给元类

时间:2016-06-16 18:49:24

标签: groovy

我发现更容易实现这种功能:

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中是否有可用于实现此类行为的注释?它叫什么?

1 个答案:

答案 0 :(得分:2)

您正在寻找@Delegate

class CoreApi {
    @Delegate RESTClient client
}

但它不适用于静态方法

  

GroovyObject接口中的静态方法,合成方法或方法不适合委派