Java 是否可以覆盖Grails域类中的列表访问器?
如果我在Grails域类中有一个列表,有没有办法覆盖addX()和removeX()访问器 在下面的示例中,我希望调用MyObject.addThing(String)两次。事实上,结果是: 添加内容:内容2Java 是否可以覆盖Grails域类中的列表访问器?,java,grails,groovy,dns,Java,Grails,Groovy,Dns,如果我在Grails域类中有一个列表,有没有办法覆盖addX()和removeX()访问器 在下面的示例中,我希望调用MyObject.addThing(String)两次。事实上,结果是: 添加内容:内容2 类MyObject{ static hasMany=[事物:字符串] 列出事物=[] void addThing(字符串newThing){ println“添加内容:${newThing}” 东西 MyObject o=新建MyObject().save() o、 things该方法应称
类MyObject{
static hasMany=[事物:字符串]
列出事物=[]
void addThing(字符串newThing){
println“添加内容:${newThing}”
东西
MyObject o=新建MyObject().save()
o、 things该方法应称为leftShift(String),而不是addThing(),正如Groovy操作符重载中所记录的那样。我不明白为什么希望调用两次addThing()
?下面是对代码的解释
// things is a List, so this calls List.leftShift(Object)
o.things << 'thing 1'
// o is an instance of MyObject, so this calls addThing()
o.addThing('thing 2')
//事物是一个列表,因此调用List.leftShift(对象)
o、 事情将我的评论转移到一个答案:
尝试使用此处记录的内置addToThings:
谢谢,很高兴知道。但我不确定如何重写'things'属性的leftShift()方法。从Java的角度考虑,您可以扩展列表并在那里重写它。动态重写leftShift()的内置列表实现可能更为groovy(双关语),但您的所有列表实例都将遵循此行为。扩展列表?顺便说一句,它是addToThings。我不确定您尝试执行的验证类型,但可能需要一个单独的域类。谢谢,Matt-addToThings()正是我正在寻找的。我也会考虑一个新的领域类,这取决于使用。Matt可能会看到你的评论,并可以添加它作为一个答案让你接受。
// things is a List, so this calls List.leftShift(Object)
o.things << 'thing 1'
// o is an instance of MyObject, so this calls addThing()
o.addThing('thing 2')