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

Groovy:如何在setProperty()中设置属性并避免无限递归?,groovy,metaprogramming,Groovy,Metaprogramming,我试图实现一个域类,该类记录任何属性值的更改时间,但我的setProperty()调用在设置实际值时会导致无限递归 这就是它现在的样子: void setProperty(String name, value) { if(name == "modified") { this.modified = value return } else { if(this[name]==value) {

我试图实现一个域类,该类记录任何属性值的更改时间,但我的
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
    }
}
那么,如何在不触发递归调用的情况下访问给定名称的属性呢?还是有其他方法可以实现我的目标?

试试:

this.@"$name" = value

(请参见)

this.@name将访问特定属性,但我需要基于属性名的常规访问。我把你的答案改成了我现在要做的事情。奇怪的是,我已经找到并尝试了这个接线员。我怀疑Netbeans仍在运行前面的代码(这种方式真的很糟糕)。