Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 是否可以覆盖Grails域类中的列表访问器?_Java_Grails_Groovy_Dns - Fatal编程技术网

Java 是否可以覆盖Grails域类中的列表访问器?

Java 是否可以覆盖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该方法应称

如果我在Grails域类中有一个列表,有没有办法覆盖addX()和removeX()访问器

在下面的示例中,我希望调用MyObject.addThing(String)两次。事实上,结果是:

添加内容:内容2

类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')