Groovy:如何在setProperty()中设置属性并避免无限递归?

时间:2010-01-15 23:07:59

标签: groovy metaprogramming

我正在尝试实现一个记录何时更改任何属性值的域类,但是在设置实际值时,setProperty()调用会导致无限递归。

这就是现在的样子:

void setProperty(String name, value)
{
    if(name == "modified")
    {
        this.modified = value
        return
    }
    else
    {
        if(this[name]==value)
        {
            return
        }
        this.modified = true
        this[name]=value
    }
}

那么如何在不触发递归setProperty()调用的情况下访问给定名称的属性?或者有不同的方法来实现我的目标?

1 个答案:

答案 0 :(得分:9)

尝试:

this.@"$name" = value

(见http://groovy.codehaus.org/Operators#Operators-Javafield%28.@%29