我一直试图通过在我的POGO中定义自定义putAt
方法来利用operator overloading in Groovy,如下所示:
class Book {
Map additionalInfo = [:]
def putAt(key, value) {
additionalInfo[key] = value
}
}
这样我就可以做book['notes'] = 'I like this one.'
之类的事情(让我们说这是有道理的)。但是,我一直在:
groovy.lang.MissingPropertyException: No such property: notes for class: Book
at BookSpec.Set property using putAt(BookSpec.groovy:40)
我的课程是Grails应用程序的一部分,所以我不确定Grails是否与该问题有关。有谁可以启发我这个?
答案 0 :(得分:3)
签名应为
def putAt(String key, value)
答案 1 :(得分:0)
通过添加putAt
方法,可以轻松/更好地实现propertyMissing
,然后覆盖运算符。
以下是link的更多解释。
class Foo {
def storage = [:]
def propertyMissing(String name, value) { storage[name] = value }
def propertyMissing(String name) { storage[name] }
}
def f = new Foo()
f.foo = "bar"
assertEquals "bar", f.foo