【发布时间】:2014-10-24 14:35:43
【问题描述】:
我有一个封装各种类型对象的通用类。因为我使用的是泛型,所以我不能使用 @delegate 注释(因为它不适用于泛型、def 或 Object 类型)。相反,我利用 methodMissing 和 propertyMissing 方法来传递方法调用和对封装对象的属性访问。我遇到的问题是如何将调用委托给由 DefaultGroovyMethods 添加的方法(每个、收集、唯一等)。我已尝试执行以下操作:
protected void setObject(T object)
{
// Save the object
this.object = object
// Delegate all the default Groovy methods to the object
DefaultGroovyMethods.class.methods*.name.unique().each({ name ->
this.metaClass.'static'."${name}" = this.object.&"${name}"
})
}
不幸的是,这根本不起作用。甚至可以通过元类覆盖默认的 Groovy 方法吗?如果是,那么需要进行哪些更改才能使其正常工作?
【问题讨论】:
标签: generics groovy delegates default