Groovy: Как установить свойство в setProperty () и избежать бесконечной рекурсии? - PullRequest
5 голосов
/ 16 января 2010

Я пытаюсь реализовать класс домена, который записывает, когда значение какого-либо свойства было изменено, но мой вызов 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 Ответ

9 голосов
/ 16 января 2010

Попробуйте:

this.@"$name" = value

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

...