【发布时间】:2015-01-22 23:01:13
【问题描述】:
我有一个作为委托针对另一个 Groovy 对象执行的闭包。我能做到:
foo {
bar {
major = 1
}
}
但是当我这样做时:
foo {
bar {
major 1
}
}
我收到一个错误:
> No signature of method: my.Bar.major() is applicable for argument types (java.lang.Integer) values: [1]
Possible solutions: setMajor(java.lang.Integer), getMajor(), wait(), any(), setMajor(java.lang.String), wait(long)
栏看起来像:
class Bar {
Integer major
Integer getMajor() { return this.major }
def setMajor(Integer val) { this.major = val }
}
我认为 Groovy 在处理属性引用时使 getter/setter 透明化,并且引用 bar.major 与 bar.get/setMajor() 相同。我是否理解错了,或者当您将Closure 代表加入混合时,元类查找路线是否有所不同?解析策略为DELEGATE_FIRST。
【问题讨论】: