如果我在Grails域類中有一個列表,是否有一種方法可以覆蓋它的addX()和removeX()訪問器?是否可以重寫Grails域類中的List訪問器?
在下面的例子中,我希望MyObject.addThing(String)被調用兩次。事實上,輸出爲:
添加件事:事2
class MyObject {
static hasMany = [things: String]
List things = []
void addThing(String newThing) {
println "Adding thing: ${newThing}"
things << newThing
}
}
class BootStrap {
def init = { servletContext ->
MyObject o = new MyObject().save()
o.things << 'thing 1'
o.addThing('thing 2')
}
def destroy = {
}
}
謝謝,好知道。不知道如何重寫'things'屬性的leftShift()方法。 – Armand 2010-03-25 16:35:28
以Java的思維框架思考,您可以擴展List並在其中覆蓋它。它可能更動態地覆蓋leftShift()的內置List實現,但是隨後List實例的_all_會遵循這種行爲。擴展名單? – 2010-03-25 16:48:08
也許我已經在想太多它是Java。我希望能完成例如addThing()方法中的驗證;創建一個內部存在約束條件的Thing類會更有趣嗎? – Armand 2010-03-25 17:10:15